程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> SSH框架之Struts(1)——Struts的運行流程

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

編輯:C++入門知識

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



  

  對於采用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配置文件中的處理結果項,從而進行轉發或者重定向,最後將界面返還給用戶!      這裡只是一個初步的了解和闡述,至於更詳細的結合源碼和流程圖會在下篇博客中進行分析





  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved