频道栏目
首页 > 资讯 > C++ > 正文

SSH框架之Struts(1)——Struts的运行流程

14-10-29        来源:[db:作者]  
收藏   我要投稿


  

  对于采用Struts框架的Web应用,我们通过实例来介绍一下其基本流程.

一、实例

   Login.jsp,进行系统登录的页面      
		
用户:
密码:

   Web.xml,初始化的配置文件
		  
		    action
		    org.apache.struts.action.ActionServlet
		    
		      config
		      /WEB-INF/struts-config2.xml
		    
		    
		      debug
		      2
		    
		    
		      detail
		      2
		    
		    2
		  
		
		
		  
		  
		    action
		    *.do
		    
		


  Struts-config.xml,strurs的配置文件

		
			
				
			
			
			
				
					
							
				
			
		



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





相关TAG标签
上一篇:javascript——正则表达式
下一篇:json初体验---了解什么是json、json的作用,json的语法格式
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站