struts的入門學習

學了mvc模式的設計,現在再來看struts,它其實也是mvc模式的,只是用了struts,能減少我們用mvc的時間。

對於應用struts來說,主要用到struts裏的org.apache.struts.action.ActionServlet,org.apache.struts.action.Action、org.apache.struts.action.ActionForm,通過xml的配置文件,實現jsp和servlet的響應請求和轉發。

 

以用戶登錄爲例,解說struts請求轉發的流程

1.配置servlet

 

<servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  <init-param>
  <!--struts的配置路徑  -->
  <param-name>config</param-name>
  <param-value>/WEB-INF/struts-config.xml</param-value>
  </init-param>
  </servlet>
  
  <!--控制器的映射路徑  ,以.do發起的請求交給ActionServlet處理-->
  <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.do</url-pattern>
  </servlet-mapping>

 2.jsp登陸界面

 

<form name="loginForm" method="post" action="LoginAction.do">
用戶名:<input type="text" name="username" id="username" ></input>
<p></p>
密&nbsp;&nbsp;碼:<input type="text" name="psw" id="psw" ></input>
<p></p>
<input type="submit" name="apply" id="apply" value="提交"></input>
<input type="submit" name="cancel" id="cancel" value="取消"></input>

</form>

 3.編寫javabean文件

 

public class LoginBean extends org.apache.struts.action.ActionForm{
   private String username;
   private String psw;
public String getUsername() {
	return username;
}
public void setUsername(String username) {
	this.username = username;
}
public String getPsw() {
	return psw;
}
public void setPsw(String psw) {
	this.psw = psw;
}

4.編寫action類

 

	public ActionForward execute(ActionMapping mapping, ActionForm form,  
			HttpServletRequest request, HttpServletResponse response) throws Exception{
		LoginBean  lb=(LoginBean)form;
		//獲得請求的參數名和密碼
		String username=lb.getUsername();
		String psw=lb.getPsw();
		if(username.equals("plh")&&psw.equals("123456")){
			return mapping.findForward("LoginOK");
		}else{
			return mapping.findForward("LoginFail");
		}
		
	}

 5.編寫struts-config.xml配置文件,使struts的action,formBean,以及jsp界面聯繫起來

 

<struts-config>
 <form-beans>
 <!--配置LoginBean的名字loginForm  -->
 <form-bean name="LoginForm" type="test.Bean.LoginBean"></form-bean> 
 </form-beans >
<action-mappings>
<action attribute="LoginForm" name="LoginForm" path="/LoginAction" scope="request" type="test.Action.LoginAction">
<forward  name="LoginOK" path="/LoginOK.jsp" contextRelative="true"></forward>
<forward  name="LoginFail" path="/LoginFail.jsp" contextRelative="true"></forward>
</action>
</action-mappings>

</struts-config>

 

在struts-config.xm中,Actionservlet根據WEB-INF/struts-config.xml中的配置處理請求,首先根據action中的name屬性,找到相應的formbean

 <form-bean name="LoginForm" type="test.Bean.LoginBean"></form-bean> 

並生成test.Bean.LoginBean對象,自動解析請求中的參數和賦值給LoginBean對象,然後根據path屬性匹配請求路徑,獲得test.Action.LoginAction對象,調用其中重寫的execute方法,傳入LoginBean對象和請求,應答等對象

同時,LoginBean對象以attribute="LoginForm"爲屬性配置的名字放在scope=“request”裏

在跳轉界面裏可以通過${requestScope.LoginForm.username}獲得屬性值

 

好了,就這樣了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章