读书人

spring mvc 跟struts2struts的比较

发布时间: 2012-12-23 11:28:15 作者: rapoo

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的执行过程。

读书人网 >VC/MFC

热点推荐