Struts框架
Struts介绍
struts:按MVC模式设计的Web层应用框架。
开源:struts是开源框架。
目的:减少用MVC设计模型来开发Web应用的时间。
流程:
(1)用户的请求以HTTP方式传输到服务器上,ActionServlet接受请求.
(2)ActionServlet查找Struts-config.xml文件来确定服务器上是否有请求的操作。如果没有,则返回出错信息。
(3)ActionServlet先将请求参数封装成formbean对象,这个formbean对象是一个Java类,通过formbean的validate校验,通过将formbean对象传递给action的execute方法,否则返回错误页面,错误页面由input属性指定。
(4)action执行完后要返回显示的用ActionFrom表示的结果视图,ActionFrom通过Struts-config.xml配置文件中关联到某个jsp页面
设置断点:
项目流程:
提供服务:
(1)作为控制器的Servlet。
(2)提供大量的标签库。
(3)提供了用于国际化的框架,利用不同的配置文件,可以帮助用户选择合适自己的语言。
(4)提供了JDBC的实现,来定义数据源和数据库连接池。
(5)XML语法分析工具。
(6)文件下载机制。
原理:(1)视图(view)
在Struts中,视图层包含两个部分,JSP页面和ActionForm。
ActionForm封装了用户提交的表单信息,其实ActonForm本质上就是JavaBean,这些JavaBean中没有业务逻辑,只提供了所有属性的getter和setter方法,这些属性和用户表单中的输入项是一一对应的。在Struts中就是通过ActionForm把用户表单信息提交给控制器。
JSP页面是经典MVC中主要的视图组件,主要是信息显示和控制器处理结果显示的功能。
除了以上,struts还提供了一个强大的struts标签库,来帮助用户解决显示逻辑,并且利用ActonForm组件将信息传递到控制层。
(2)控制器(Controller)
在控制层,struts提供了一个控制器组件ActionServlet,它继承自HttpServlet,并重载了HttpServlet的doGet(),doPost()方法,可以接受HTTP的响应,并进行转发,同时还提供了使用XML进行转发Mapping(映射)的功能。
(3)模型(Model)
模型表示状态和业务逻辑的处理,在一般的web应用程序中,用JavaBean或者EJB来实现系统的业务逻辑。在Struts中,struts提供Action对象,来管理业务逻辑的调用,帮助用户分离业务逻辑,也就是说struts本身不实现业务逻辑,但可以调用已完成的业务逻辑。
案例实现
登录功能的处理流程:
核心操作:
1、配置struts
首先是建立Java web项目,之后打开我们我们下载好strtus框架,Struts-1.2.9-bin文件夹和struts-1.2.9.src源文件文件夹。在bin文件夹中的lib文件中拷贝struts的jar包,拷贝到我们自己项目struts_login –>lib文件夹下。
找到Struts-1.2.9-bin中Struts-1.2.9-bin-->webapps下的struts实例struts-blank中的struts-1.2.9-bin\webapps\struts-blank\WEB-INF下的web.xml文件,复制配置对ActionServlet的配置,粘贴到我们的项目struts_login的WEB-INF下的web.xml中,代码如下所示。主要是对struts自带的ActionServlet进行配置。
2、实现
目录结构:
代码:
配置文件
- <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>
-
-
-
- <servlet-mapping>
- <servlet-name>action</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
JSP(View)
- <form action="login.do" method="post">
- <input type="text" name="name" />
- <br />
- <input type="password" name="password" />
-
- <input type="submit" value="登录"/>
- </form>
LoginSuccess.jsp
- <body>
- 登录成功》》》》》》》》》》》》
- </body>
LoginFail.jsp
- <body>
- 登录失败》》》》》》》》》》》》
- </body>
LoginAction
- package com.jialin;
-
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- import org.apache.struts.action.Action;
- import org.apache.struts.action.ActionForm;
- import org.apache.struts.action.ActionForward;
- import org.apache.struts.action.ActionMapping;
-
-
-
-
-
-
- public class LoginAction extends Action {
-
- @Override
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- UserActionForm userForm=(UserActionForm)form;
- String userName=userForm.getName();
- int password=userForm.getPassword();
-
- UserManage userManage=new UserManage();
- User user=new User();
- user.setName(userName);
- user.setPassword(password);
-
- try {
- userManage.ValidateUser(user);
- return mapping.findForward("success");
- } catch (UserNotFoundException e) {
- e.printStackTrace();
- request.setAttribute("message", e.getMessage());
- }catch(PasswordErrorException e){
- e.printStackTrace();
- request.setAttribute("message", e.getMessage());
- }
-
- return mapping.findForward("fail"); }
-
- }
struts-config.xml
- <?xml version="1.0" encoding="ISO-8859-1" ?>
-
- <!DOCTYPE struts-config PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
- "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
-
- <struts-config>
-
- <form-beans>
- <form-bean name="userForm" type="com.jialin.UserActionForm" />
- </form-beans>
-
- <action-mappings>
-
- <action path="/login" type="com.jialin.LoginAction" name="userForm"
- scope="request">
- <forward name="success" path="/LoginSuccess.jsp" />
- <forward name="fail" path="/LoginFail.jsp" />
- </action>
- </action-mappings>
-
- </struts-config>
UserActionForm
- package com.jialin;
-
- import org.apache.struts.action.ActionForm;
-
-
-
-
-
-
- public class UserActionForm extends ActionForm {
- private String name;
- private int password;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getPassword() {
- return password;
- }
- public void setPassword(int password) {
- this.password = password;
- }
-
- }
UserManage(Model)
- package com.jialin;
-
-
-
-
-
-
- public class UserManage {
-
- public void ValidateUser(User user) {
-
- if (!"jialin".equals(user.getName())) {
- throw new UserNotFoundException("用户不存在!用户名为:" + user.getName());
- } else if (user.getPassword() != 123456) {
- throw new PasswordErrorException("密码错误");
- }
- }}
参考文:http://blog.csdn.net/shan9liang/article/details/8690179
http://blog.csdn.net/lovesummerforever/article/details/17348871