收养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) {
// 推断usernamepassword是否正确
if (!"admin".equals(user.getName())) {
throw new UserNotFoundException("用户不存在! username为:" + user.getName());
} else if (user.getPassword() != 123456) {
throw new PasswordErrorException("password错误");
}
}}



二、运行流程

 A、初始化设置

  Struts1的核心ActionServlet是继承于Servlet的,它在Web.xml配置成自己主动启动。

 B、发送和接收请求

  (1)当client提交请求时,全部以.do结尾的请求被提交到ActionServlet这个中央分发器上。

  (2)依据client提交请求的方式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配置文件里的处理结果项。从而进行转发或者重定向,最后将界面返还给用户!
  
  这里仅仅是一个初步的了解和阐述,至于更具体的结合源代码和流程图会在下篇博客中进行分析






版权声明:本文博客原创文章,博客,未经同意,不得转载。

SSH骨架Struts(1)——Struts执行过程的更多相关文章

  1. Action的三种实现方式,struts.xml配置的详细解释及其简单执行过程(二)

    勿以恶小而为之,勿以善小而不为--------------------------刘备 劝诸君,多行善事积福报,莫作恶 上一章简单介绍了Struts2的'两个蝴蝶飞,你好' (一),如果没有看过,请观 ...

  2. 菜鸟学习SSH(一)——Struts实现简单登录(附源码)

    从今天开始,一起跟各位聊聊java的三大框架——SSH.先从Struts开始说起,Struts对MVC进行了很好的封装,使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时 ...

  3. 菜鸟学SSH(一)——Struts实现简单登录(附源码)

    从今天开始,一起跟各位聊聊java的三大框架——SSH.先从Struts开始说起,Struts对MVC进行了很好的封装,使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时 ...

  4. JavaWeb_(SSH)三大框架整合struts+hibernate+spring_Demo

    三大框架整合 一.SSH导包 二.书写Spring 三.书写Struts 四.整合Spring与Struts 五.书写(与整合)Hibernate.引入c3p0连接池并使用hibernate模板 六. ...

  5. Struts2拦截器的执行过程浅析

    在学习Struts2的过程中对拦截器和动作类的执行过程一度陷入误区,特别读了一下Struts2的源码,将自己的收获分享给正在困惑的童鞋... 开始先上图: 从Struts2的图可以看出当浏览器发出请求 ...

  6. Struts2执行过程解析

    说到Struts2执行过程就少不了一张图: 1 客户端初始化一个指向Servlet容器的请求: 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextClea ...

  7. 四、Struts2的执行过程和原理

    执行过程和原理(可能面试题) 学习目标:熟知struts2的执行过程(下图记住).源码可以不看 a.过滤器的初始化 .StrutsPrepareAndExecuteFilter是一个过滤器,过滤器就有 ...

  8. struts2的简单执行过程

    struts2是最近刚学的一个框架,想通过写篇文章来加深下印象,这也是本篇博文产生的由来,下面进入正题 Struts2本身是一个挺简单的框架,我们通过写一个登陆的过程来具体描述下其执行过程 1.首先我 ...

  9. Struts2_day01--导入源文件_Struts2的执行过程_查看源代码

    导入源文件 选中按ctrl + shift + t进入 Struts2执行过程 画图分析过程 过滤器在服务器启动时创建,servlet在第一次访问时创建 查看源代码 public class Stru ...

  10. struts2学习(5)拦截器简介以及例子执行过程

    一.拦截器简介: 二.Struts2预定义拦截器&拦截器栈 在执行action之前和之后,拦截器进行了操作: 比如struts-default.xml中就有很多预定义的拦截器:   拦截器栈: ...

随机推荐

  1. POJ3279 Catch That Cow(BFS)

    本文来源于:http://blog.csdn.net/svitter 意甲冠军:给你一个数字n, 一个数字k.分别代表主人的位置和奶牛的位置,主任能够移动的方案有x+1, x-1, 2*x.求主人找到 ...

  2. 解决Ubuntu和Windows该文件乱码问题

    1.转换文件内容编码    Windows在自然纯文本文件.当中国作为编码GBK,在Ubuntu下乱码,可以使用iconv命令转换:    iconv -f gbk -t utf8 source_fi ...

  3. POJ 2250 Compromise (UVA 531)

    LCS问题.基金会DP. 我很伤心WA非常多.就在LCS问题,需要记录什么路. 反正自己的纪录path错误,最后,就容易上当. 没有优化,二维阵列,递归打印,cin.eof() 来识别 end of ...

  4. IT行业为什么没有进度

    参加工作多年了,来来回回参与了N多项目,大部分都是政府性的招标项目.每个项目都是顺利进行验收,在这些验收过的项目中大部分都或多或少都有一定的时间延期,每个项目都能够和合同或者需求说明书对应的上,但是真 ...

  5. 在js中做数字字符串加0补位,效率分析

    分类: Jquery/YUI/ExtJs 2010-08-30 11:27 2700人阅读 评论(0) 收藏 举报 functiondate算法语言c 通常遇到的一个问题是日期的“1976-02-03 ...

  6. PocketSphinx语音识别系统语言模型的训练和声学模型的改进

    PocketSphinx语音识别系统语言模型的训练和声学模型的改进 zouxy09@qq.com http://blog.csdn.net/zouxy09 关于语音识别的基础知识和sphinx的知识, ...

  7. linux 手动安装 oracle(转)

    Linux下安装Oracle 11 此为参照CU论坛上的高人写的文章并结合自身环境增加了点细节性的东西 操作系统 CentOS 4.2 2.6.11.8内核 安装准备 下载Oracle11安装包 内存 ...

  8. Net Memory Profiler 分析.Net程序内存泄露

    Net Memory Profiler 分析.Net程序内存泄露 Haozes's Tech Space 人類的全部才能無非是時間和耐心的混合物 使用.Net Memory Profiler 分析.N ...

  9. Spring3.2 HelloWorld

    直接上图吧: jar包: 项目文件夹一览: 这里的HelloWeb-servlet,xml 是在WEB-INF 下 HelloController: package com.cqu.tutorial; ...

  10. Error Code: 1318. Incorrect number of arguments for PROCEDURE company.new_procedure; expected 2, got

    1.错误叙述性说明 20:27:34 call new_procedure(20150112) Error Code: 1318. Incorrect number of arguments for ...