spring mvc 和struts2,struts的比较
?????????????????????????? 第一讲
???? 我们先来讲讲mvc吧,spring mvc ,struts2,struts 都是mvc框架。?
??? 对于现有较成熟的Model-View-Control(MVC)框架而言,其解决的主要问题无外乎下
面几部分:
1.将Web页面中的输入元素封装为一个(请求)数据对象。
2.根据请求的不同,调度相应的逻辑处理单元,并将(请求)数据对象作为参数传入。
3.逻辑处理单元完成运算后,返回一个结果数据对象。
4.将结果数据对象中的数据与预先设计的表现层相融合并展现给用户。
我们先来看看spring mvc 的操作过程。
??
??? 配置web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4" id="WebApp_ID"> <display-name>web-board-backend</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/service.xml, /WEB-INF/action-servlet.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/jsp/login.jsp</welcome-file> </welcome-file-list> <session-config> <session-timeout>1440</session-timeout> </session-config></web-app>
???? action-servlet
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"><beans><bean id="viewResolver" value="org.springframework.web.servlet.view.JstlView"/><property name="prefix" value="/"/><property name="suffix" value=".jsp"/></bean><bean id="defaultHandlerMapping" name="code"><?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"><bean id="messageDAO" ref="messageDAO"/> </bean></beans>
????? 配置文件写好了
??? 上面的三个文件可以放到WEB-INF的目录下。
????? 写好配置文件后 我们就可以写java'代码了
package com.downjoy.app.boardbackend.ui.html;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.portlet.ModelAndView;import org.springframework.web.servlet.mvc.multiaction.MultiActionController;import com.downjoy.app.boardbackend.common.exception.WebBoardBackendException;import com.downjoy.app.boardbackend.common.service.MessageService;import com.downjoy.app.boardbackend.common.to.CollectionTO;import com.downjoy.app.boardbackend.common.to.MessageSearchCriteriaTO;import com.downjoy.app.boardbackend.common.to.MessageTO;import com.yupstudio.lib.webutil.WebStringUtil;/** * 留言板后台Controller层 * @author jie.yao@downjoy.com * */public class MessageController extends MultiActionController { private static final WebStringUtil webUtil=WebStringUtil.getInstance(); private MessageService messageService; public MessageService getMessageService() { return messageService; } public void setMessageService(MessageService messageService) { this.messageService=messageService; } /** * 列出留言信息 * @param request * @param response * @return ModelAndView * @throws WebBoardBackendException */ public ModelAndView list(HttpServletRequest request, HttpServletResponse response) throws WebBoardBackendException { Map<String, Object> model=new HashMap<String, Object>(); int pageNo=webUtil.getInt(request, "pageNum"); int pageSize=webUtil.getInt(request, "numPerPage"); String keyword=webUtil.getString(request, "keyword"); MessageSearchCriteriaTO criteria=new MessageSearchCriteriaTO(); criteria.setKeyword(keyword); criteria.setPageNo(pageNo); criteria.setPageSize(pageSize); CollectionTO<MessageTO> col=messageService.ListMessagesByCriteria(criteria); List<MessageTO> messages=null; int pageCount=0; if(col != null && col.size() != 0) { messages=col.getList(); pageCount=col.getPageCnt(); pageNo=pageNo > pageCount ? pageCount : pageNo; } model.put("messages", messages); model.put("pageNo", pageNo); model.put("pageSize", pageSize); return new ModelAndView("reply_list", "model", model); }}?
在webRoot 下有一个reply_list.jsp最终数据返回给这个jsp。
?
这是一个小列子,接下来根据这个例子分析,spring mvc的执行过程。