zoukankan      html  css  js  c++  java
  • SSH骨架Struts(1)——Struts执行过程


      

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






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

  • 相关阅读:
    pip 配置国内源
    python + excel工资条自动生成
    Mysql 查看表结构
    win10中Pycharm连接mysql时区错误的解决
    kali linux中mariadb加上密码
    静态链表的基本操作
    静态链表dd
    静态链表
    单链表的基本操作
    单链表
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4713647.html
Copyright © 2011-2022 走看看