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}获得属性值

 

好了,就这样了。

 

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