正文

struts初体验之StrutsLoginDemo(2)2008-08-03 10:59:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xman/37325.html

分享到:

解析StrutsLoginDemo中的Form, Action And JSP 在StrutsLoginDemo中,我们New→Form, Action And JSP后生成了以下文件: JSP:   WebRoot/ userLogin.jsp Form:  src/com.yourcompany.struts.form/UserLoginForm.java Action:src/com.yourcompany.struts.action/UserLoginAction.java 以下解析他们之间的组织关系: 一.Struts配置文件Struts-config.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">   <struts-config>   <data-sources />   <form-beans >     <form-bean name="userLoginForm" type="com.yourcompany.struts.form.UserLoginForm" />   </form-beans>     <global-exceptions />   <global-forwards />   <action-mappings >     <action       attribute="userLoginForm"       input="/userLogin.jsp"       name="userLoginForm"       path="/userLogin"       scope="request"       type="com.yourcompany.struts.action.UserLoginAction">       <forward name="success" path="/userLoginSuccess.jsp" />       <forward name="failure" path="/userLogin.jsp" />     </action>   </action-mappings>   <message-resources parameter="com.yourcompany.struts.ApplicationResources" /> </struts-config> 解析: 这个文件指明了Form, Action And JSP三位一体的逻辑关联和组织方法。 1.<form-beans >配置ActionForm,至少必须指定两项:    name:该项用于标识ActionForm的Id,以便于传递给Action进行使用    type:ActionForm的实现类                              2.<action>配置Action,参数说明: attribute—该action的归属 input—action对应的请求页面name—和bean标签的name对应,是这个action对应的哪一个beanpath—ActionSerlvet将用户的请求转发与之同名的Action,同名的意思是将请求 的".do"后缀去掉。匹配Action的path属性值 scope—请求范围,有两种:request,sessiontype —指定对应的action类 forward—将Action的转发映射到实际的jsp页面,在实际编程时应该用逻辑名进行转发     一个Action可以有ActionForm,也可以没有ActionForm。如果是post提交的一般会有ActionForm。比如:<form id="frm1" action="loginAction.do">,如果是通过get提交则不会有ActionForm,但是Action总是会有的,因为要处理业务逻辑。比如:<a href="shopAddAction.do"> 二.JSP网页文件userLogin.jsp <%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>   <html>     <head>     <title>JSP for UserLoginForm form</title>     </head>     <body>     <html:form action="/userLogin">     userName : <html:text property="userName"/><html:errors property="userName"/><br/>     password : <html:password property="password"/><html:errors property="password"/><br/>     <html:submit/><html:cancel/>     </html:form>     </body> </html> 解析: 1.<html:form action="/userLogin">action 与上面的path对应就唯一确定了actionform。 2.userName : <html:text property="userName"/>和    password : <html:password property="password"/>    分别定义了登录界面userLogin.jsp中的用户text控件及其property、密码password控件及其property。 三.ActionForm类实现UserLoginForm.java package com.yourcompany.struts.form; import org.apache.struts.action.ActionForm;   public class UserLoginForm extends ActionForm {     /** userName property */     private String userName;     /** password property */     private String password;         public String getUserName() {        return userName;     }       public void setUserName(String userName) {        this.userName = userName;     }       public String getPassword() {        return password;     }   public void setPassword(String password) {        this.password = password;     } } 解析: 这个类主要定义了两个String类型的变量userName和password(userLogin.jsp中的两个 property),并定义了其存取方法(get\set),我们可以类比MFC中的DDX/DDV控件数据校 验机制。 四.Action类实现UserLoginAction.java package com.yourcompany.struts.action; import javax.servlet.http.HttpServletRequest;   public class UserLoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form,            HttpServletRequest request, HttpServletResponse response) {        UserLoginForm userLoginForm = (UserLoginForm) form;// TODO Auto-generated method stub          if (userLoginForm.getUserName().equals("fan") && userLoginForm.getPassword().equals("20080808"))             {                 request.setAttribute("userName", userLoginForm.getUserName());                 return mapping.findForward("success");             }             else             {                 return mapping.findForward("failure");             }     } } 解析: 这个类中主要定义了execute方法对数据进行处理。 首先定义类UserLoginForm的实例userLoginForm,然后通过调用其get\set方法来提取数据,并根据数据作出相应处理。   参考: http://www.blogjava.net/happy-java3000/articles/41710.html http://dev.csdn.net/author/baggio785/ae23a10757e44fd2acd2ebf8cb44ecd8.html http://java.chinaitlab.com/Struts/521869_3.html

阅读(3295) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册