收养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. shell手册--笨鸟杰作

    ==================================================================================================== ...

  2. ubuntu12.04 安装和配置jdk1.7

    第一步:下载jdk-7-linux-i586.tar.gz wget -c http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586 ...

  3. Unity--关于优化方面的那些事儿(一)

    近期做一个小项目,要求包的大小不能超过30M. 晚上做了个小实验,方法的确非常本,只是曾经非常多没懂的地方如今清晰了很多,我是菜鸟!希望本文章对大家有帮助,谢谢! 实验结果: 实验结果: 1.场景中仅 ...

  4. [笔记] C# Windows Phone 8 WP8 开发,判断目前网路是否可用。

    原文:[笔记] C# Windows Phone 8 WP8 开发,判断目前网路是否可用. 常常我们在开发Windows Phone 8 App时会使用网路来读取网页的资料或其他开放平台的Json.X ...

  5. 玩转web之json(五)---将表单通过serialize()方法获取的值转成json

    form表单有一个serialize()方法,可以序列化表单的值,但是jquery提供的这个方法会把数据序列化为类似下面的形式: a=1&b=2&c=3&d=4 jquery并 ...

  6. Android各种屏幕分辨率(VGA、HVGA、QVGA、WQVGA、WVGA、FWVGA) 具体解释

    看资料的时候常常看到各种VGA,全都混了,无奈,找了些资料总结了下,分享给大家: 这些术语都是指屏幕的分辨率. VGA:Video Graphics Array,即:显示画图矩阵,相当于640×480 ...

  7. HDOJ 4687 Boke and Tsukkomi 一般图最大匹配带花树+暴力

    一般图最大匹配带花树+暴力: 先算最大匹配 C1 在枚举每一条边,去掉和这条边两个端点有关的边.....再跑Edmonds得到匹配C2 假设C2+2==C1则这条边再某个最大匹配中 Boke and ...

  8. lua学习笔记11:lua中的小技巧

    lua中的小技巧,即基础lua语言本身的特种,进行一个些简化的操作 一. 巧用or x = x or v 等价于: if not x then x = v end 假设x为nil或false,就给他赋 ...

  9. Hadoop学问Eclipse构建Hadoop工程

    在此之前的基础Hadoop在官方文件HDFS.MapReduce架构.配置管理是学习,但是,一些地方的官方文件相当含糊的解释. 我们没有发挥人可以体验,某种官方文件似业务规则或要求,但是,真正的细节还 ...

  10. html风格的滚动条

    DIV辊棒的设置 (CSS)2008/09/26 03:07div 控制滚动条2008年01月06日本 星期日 01:181)隐藏滚动条<body style="overflow-x: ...