SSH之struts—如何实现MVC
2014-10-01 08:35
337 查看
学习drp的时候学过model2,相比较model1的jsp+javabean的开发模式,model2是jsp+servlet+javabean,它通过servlet实现控制,获取前端数据、调用业务逻辑并将结果返回到jsp,是MVC框架,servlet就是controler。但是在servlet需要具体指定jsp,如果jsp改名了就要修改程序,,而且它获得的前端数据都是字符串,每次传值后还要转换格式,显然这不是最好的方式,所以今天介绍struts怎么实现的MVC,如何避免这些问题?
一、回顾model2(mvc)
在博客model1和model2的区别 中介绍了model2的开发模式,大家可以去回顾下servlet是如何控制的。
二、通过servlet讲解如何实现MVC
既然对servlet是熟悉的,那就先通过servlet讲解。开始已经说到传统的model2模式存在一些弊端,struts对它做了改进,通过配置文件解耦controler。
1、时序图
这里servlet的功能不再是收集信息调用业务逻辑,它的作用是:截取url,并根据配置文件分发到相应的action。让action去做原本servlet该做的,而且action返回不再是具体的jsp页面。
2、配置文件
web.xml
这里配置所有以.do结尾的action都去读取struts-config.xml配置文件,actionservlet的作用就是时序图中的servlet。
struts-config.xml
三、struts如何实现
上面讲述的是通过代码直观的表示,struts对它进行的封装。看下面的图:
客户端将请求发到ActionServlet,它截取url,并且通过配置文件分发到具体的action,然后action调用业务逻辑,并返回结果,actionservlet再将结果转发到jsp。
1.loginForm如何工作
2.loginAction
四、总结
1、ActionServlet负责截取url和分支,它是一个中央控制器
2、ActionForm会收集表单数据,这样表单数据会自动转换成相应的数据类型,相比model2更灵活
3、Action业务层控制器,也是和模型层打交道的桥梁,和model2的servlet作用一样
一、回顾model2(mvc)
在博客model1和model2的区别 中介绍了model2的开发模式,大家可以去回顾下servlet是如何控制的。
二、通过servlet讲解如何实现MVC
既然对servlet是熟悉的,那就先通过servlet讲解。开始已经说到传统的model2模式存在一些弊端,struts对它做了改进,通过配置文件解耦controler。
1、时序图
这里servlet的功能不再是收集信息调用业务逻辑,它的作用是:截取url,并根据配置文件分发到相应的action。让action去做原本servlet该做的,而且action返回不再是具体的jsp页面。
2、配置文件
web.xml
<servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>2</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <!-- Standard Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
这里配置所有以.do结尾的action都去读取struts-config.xml配置文件,actionservlet的作用就是时序图中的servlet。
struts-config.xml
<struts-config> <!-- 配置actionForm --> <form-beans> <form-bean name="loginForm" type="com.zx.struts.LoginActionForm" /> </form-beans> <!-- 配置action --> <action-mappings> <action path="/login" type="com.zx.struts.LoginAction" name="loginForm" scope="request"> <forward name="success" path="/login_success.jsp" /> <forward name="error" path="/login_error.jsp" /> </action> </action-mappings> </struts-config>loginForm用来收集表单信息,和页面传过来的一样不用再改格式。path是截取的url,分发到LoginAction,如果成功返回success,定位到成功页面,error定位到失败页面。如果jsp被重命名只需该配置文件即可,不用动程序。所以action和loginform的作用是完成数据收集和业务逻辑调用。
三、struts如何实现
上面讲述的是通过代码直观的表示,struts对它进行的封装。看下面的图:
客户端将请求发到ActionServlet,它截取url,并且通过配置文件分发到具体的action,然后action调用业务逻辑,并返回结果,actionservlet再将结果转发到jsp。
1.loginForm如何工作
/** * 登录actionForm,负责收集表单数据 * 表单的属性必须和actionform中的get和set的属性一致 * @author zx * */ public class LoginActionForm extends ActionForm { private String username ; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
2.loginAction
public class LoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LoginActionForm laf = (LoginActionForm)form; String username = laf.getUsername(); String password = laf.getPassword(); if("admin".equals(username) && "admin".equals(password)){ //登录成功,struts会new一个actionforward对象把信息放进去 return mapping.findForward("success"); }else{ //登录失败 return mapping.findForward("error"); } }execute方法封装了actionform,所以可以直接调用并取值,最后的返回值是字符串和配置文件对应。
四、总结
1、ActionServlet负责截取url和分支,它是一个中央控制器
2、ActionForm会收集表单数据,这样表单数据会自动转换成相应的数据类型,相比model2更灵活
3、Action业务层控制器,也是和模型层打交道的桥梁,和model2的servlet作用一样
相关文章推荐
- struts如何实现mvc
- Struts是如何实现MVC的
- Struts如何实现Model 2, MVC
- MVC模式与如何实现struts MVC模式
- Struts是如何实现MVC的
- Struts如何实现MVC架构的
- struts如何实现MVC,每一个模块都…
- Struts是如何实现MVC的
- Struts是如何实现MVC的
- SSH框架-Struts如何实现MVC
- 概述struts,以及struts如何实现MVC架构的
- Struts是如何实现MVC的
- (基础篇)struts是mvc的实现,mvc是什么?struts是如何实现的?
- 概述struts,以及struts如何实现MVC架构的?
- Struts,MVC 的一种开放源码实现用这种servlet和JSP框架管理复杂的大型网站
- Struts,MVC 的一种开放源码实现(转载)
- Struts,MVC 的一种开放源码实现
- Struts,MVC 的一种开放源码实现用这种servlet和JSP框架管理复杂的大型网站
- Struts,MVC 的一种开放源码实现用这种servlet和JSP框架管理复杂的大型网站
- Struts,MVC 的一种开放源码实现用这种servlet和JSP框架管理复杂的大型网站