zoukankan      html  css  js  c++  java
  • struts1.X工作流程

    struts1的工作流程

     1. 读取配置(容器启动时一次性加载)

    容器读取web.xml,自动加载设置为自动启动的ActionServlet; 读取struts-config.xml配置信息

    2.发送请求

      客户端发送http请求,容器收到后通过web.xml上的URL通配符(一般是*.do)找到ActionServlet;

    3.填充数据

    ActionServlet(Action配置path,唯一标识)从ActionConfig对象查找Action类,如果没有找到则转发给JSP或静态页面,如果有找到Action类和对应ActionForm类(Action配置name,FormBeanConfig对象中查找),实例化(Action配置或ActionForm配置type,反射);

    ActionForm被实例化并用HTTP请求的数据填充其属性,并将其保存在指定域(Action配置scope)中,ServletContext、session、request;

    4.派发请求

      ActionServlet将请求和相应FormBean传给Action的excute()方法使用。

    5.处理业务

    执行相应的业务逻辑,将结果放入请求,返回ActionForward对象;

    6.返回响应

     ActionServlet根据ActionForward对象在ForwardConfig对象 (name)查找对应的跳转(JSP或者Action);

    7.响应客户

    ActionServlet将请求(参数和属性)带入下一个JSP或者Action,如果是Action将重复2.发送请求(属性可带);如果是JSP,容器会将JSP生成结果为html,然后响应给客户端;

    说明:

    如果Action配置里面没有name属性,将不会初始化ActionForm,Action内无法使用
    html:form对应到表单上的属性,名称不一致会报错


    下面使用struts1模拟一个用户登录


    1 创建ActionForm

    package com.itmyhome.form;
    
    import org.apache.struts.action.ActionForm;
    
    public class LoginForm 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;
    	}
    
    }
    
    然后在struts-config.xml文件中进行注册:

    <form-beans>
    		<form-bean name="loginForm" type="com.itmyhome.form.LoginForm" />
    	</form-beans>

    2 创建Action

    package com.itmyhome.action;
    
    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;
    
    import com.itmyhome.form.LoginForm;
    
    public class LoginAction extends Action {
    	@Override
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)throws Exception {
    		
    		LoginForm loginForm = (LoginForm) form;
    		if ("zhangsan".equals(loginForm.getUsername())
    				& "123".equals(loginForm.getPassword())) {
    			return mapping.findForward("success");
    		} else {
    			return mapping.findForward("error");
    		}
    	}
    }
    
    Action类也要在struts-config.xml文件中注册

    <action path="/login" type="com.itmyhome.action.LoginAction"
    			name="loginForm">
    			<forward name="success" path="/success.jsp" />
    			<forward name="error" path="/error.jsp" />
    		</action>

    3 在struts-config.xml上注册对应的Action配置和ActionForm配置

    <?xml version="1.0" encoding="utf-8" ?>
    
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
              "http://struts.apache.org/dtds/struts-config_1_3.dtd">
    
    <struts-config>
    	<form-beans>
    		<form-bean name="loginForm" type="com.itmyhome.form.LoginForm" />
    	</form-beans>
    	<action-mappings>
    		<!-- 属性name名字接收form-bean中的参数 -->
    		<action path="/login" type="com.itmyhome.action.LoginAction" name="loginForm">
    			<forward name="success" path="/success.jsp" />
    			<forward name="error" path="/error.jsp" />
    		</action>
    	</action-mappings>
    </struts-config>
    
    

    4  配置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>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>action</servlet-name>
    		<url-pattern>*.do</url-pattern>
    	</servlet-mapping>

     初始化参数用来对Servlet的运行时环境进行初始配置。<servlet>的<init-param>子元素用于配置Servlet初始化参数

    config 以相对路径的方式指明struts应用程序的配置文件的位置,如不设置,则默认为/WEB-INF/struts-config.xml

    如果在src下 则配置为<param-value>/struts-config.xml</param-value>

    5 创建jsp页面

      login.jsp

    <form action="login.do" method="post">
        	USERNAME:<input type="text" name="username" /></br>
       	    PASSWORD: <input type="password" name="password" /></br>
        	<input type="submit" value="LOGIN">
        </form>

    success.jsp  error.jsp分别写入success login      error  login 进行测试


  • 相关阅读:
    JAVAWEB使用保存cookie、删除cookie、获取cookie工具类
    JAVA比较指定的两个日期
    编写一个C程序运行时输出 Hello World!
    正确理解以下名词及其含义:1源程序,目标程序,可执行程序2程序编辑,程序编译,程序连接3程序,程序模块,程序文件4函数,主函数,被调用函数,库函数5程序调试,程序测试
    为什么需要计算机语言?高级语言有哪些特点?
    什么是程序?什么是程序设计?
    题解 卡农
    题解 GT考试
    题解 SP6779 【GSS7
    题解 Crash 的文明世界
  • 原文地址:https://www.cnblogs.com/itmyhome/p/4131534.html
Copyright © 2011-2022 走看看