SSH框架之Struts(1)——Struts的运行流程
来源:互联网 发布:pdf骑缝章软件 编辑:程序博客网 时间:2024/05/11 05:30
对于采用Struts框架的Web应用,我们通过实例来介绍一下其基本流程.
一、实例
Login.jsp,进行系统登录的页面
<form action="login.do" method="post">用户:<input type="text" name="username"><br>密码:<input type="password" name="password"></br><input type="submit" value="登录"></form>
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-config2.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> </web-app>
Struts-config.xml,strurs的配置文件
<struts-config><form-beans><form-bean name="loginForm" type="com.bjpowernode.struts.LoginActionForm"/></form-beans><action-mappings><action path="/login" type="com.bjpowernode.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>
LoginAction:
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"); }
LoginActionForm:
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; } }
UserManager
public class UserManage { public void ValidateUser(User user) { // 判断用户名密码是否正确 if (!"admin".equals(user.getName())) { throw new UserNotFoundException("用户不存在!用户名为:" + user.getName()); } else if (user.getPassword() != 123456) { throw new PasswordErrorException("密码错误"); } }}
二、执行流程
A、初始化设置
Struts1的核心ActionServlet是继承于Servlet的,它在Web.xml配置成自动启动;B、发送和接收请求
(1)当客户端提交请求时,所有以.do结尾的请求被提交到ActionServlet这个中央分发器上。(2)根据客户端提交请求的方式Get/Post选择执行到ActionServelet的doGet()还是doPost方法
C、处理和分发请求
(3)不论执行doGet()/doPost()方法,都会执行到process()方法。这是ActionServlet的一个核心方法,在这个方法中,实现了截取请求路径(processPath),根据截取的请求路径到Struts.cofing.xml配置文件中找对应的ActionMapping(processMapping)(4)当ActionServlet匹配到用户请求的Action后,会将response请求的表单参数打包成一个ActionForm(调用processActionForm实现)对象,这个ActionFrom对象实质是一个JavaBean,里面包含了表单的数据信息。
(5)这时候,系统会转入到具体的Action,并传递过来ActionForm对象,执行具体Action中的Execute()方法。
(6)execute()执行结束,会生成一个ActionForward类型的对象并返回给ActionServlet,结合在Struts.cofing.xml配置文件中的处理结果项,从而进行转发或者重定向,最后将界面返还给用户!
这里只是一个初步的了解和阐述,至于更详细的结合源码和流程图会在下篇博客中进行分析
0 0
- SSH框架之Struts(1)——Struts的运行流程
- SSH框架之Struts(2)——Struts的运行流程之配置文件
- SSH框架之Struts(3)——Struts的运行流程之核心方法
- 简介SSH框架、SSH框架之Struts的初识、Struts开发流程详解、Struts执行流程
- SSH框架之Struts(4)——Struts查漏补缺BeanUtils的简单使用
- 自学SSH框架之---struts(一):struts的配置
- Struts框架运行流程
- SSH框架之Struts的数据校验(1)
- SSH框架之Struts(4)——Struts查漏补缺BeanUtils在Struts1中
- SSH框架之Struts的引入、第一个Struts配置
- SSH框架之Struts的struts-default.xml配置文件
- SSH框架之Struts的struts.xml配置文件详解
- SSH框架之Struts的数据处理
- SSH框架之Struts的文件上传
- SSH框架之Struts的文件下载
- SSH框架之Struts的拦截器
- SSH框架之Struts的国际化
- SSH框架之Struts的数据校验(2)
- 模板和表单处理
- Shell函数参数
- 求逆序数(树状数组)
- 【Android测试之Monkey】
- Ogre 1.7的地形系统
- SSH框架之Struts(1)——Struts的运行流程
- Number Sequence
- 聊一聊Android的第三方开发组件
- 江南烟雨笑痴迷
- hibernate的级联-----one-to-one
- 第9周项目5-程序填充题c
- 第9周项目3 分数的累加
- 纹理贴图
- 再回首之“拆装机”