Structs(一)
1.首先在Project里右键Myeclipse,选择add structs capabilities.
Structs-config.xml核心配置文件,名字可以改动。 之后在src下多了一个类包,里面有一个资源文件。多了structs和依赖包,多了标签和xml配置文件。 //PS:(个人理解:action可以改,而且随着配制的改变,xml里面也会相应的改动,当jsp提交到.do文件时,会找到action这个servlet,然后再去找form..java和action.java)。 注意在web.xml里面的变化 <servlet>//要做的事情是 根据你提交的路径跳到哪个类里。 <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> 2.新建一个jsp
Taglib标签:
url是唯一标识符,在导入标签里面有一个structs-bean.tld里面有一句话
<uri>http://struts.apache.org/tags-bean</uri>是对应的。
后面prefix是你应用标签时需要写的关键字。
3.开发完页面之后,不需要创建servlet,需要创建一个代替他的东西。
在你src新添加的类包中,点击new-other下面的myeclipse->web-Structs->1.2->structs1.2 form,action &jsp.
Form是管前半部分的,用于接收参数,而action是管后半部分的用于验证,跳转等功能。
配置Form
其中NAME那个选项:
Jsp里面提交到login.do,这里就把do前面那个填进去。
配置Action
注意:最后Input Source是输入页面。 发现在类包中多了Form和Action包。 4.先进入到form包中。 在LoginForm.java中多了一个方法 public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors=new ActionErrors(); if(this.username==null||this.username.trim().equals("")) { errors.add("username", new ActionMessage("username.null")); } if(this.password==null||this.password.trim().equals("")) { errors.add("password" , new ActionMessage("password.null")); } return errors; }//用来完成验证信息,一般用来验证非空和数据格式。 5.在src下新生成的ApplicationResources.properties这个文件下配置错误信息。 username.null=/u7528/u6237/u540d/u4e0d/u80fd/u4e3a/u7a7a/uff01 password.null=/u5bc6/u7801/u4e0d/u80fd/u4e3a/u7a7a/uff01 (第一个编码为:用户名不能为空!,第二个为:密码不能为空!因为不识别汉字,所以需要编码,编码转换过程如下1,先将所需转换文字复制,然后找到你的Java/jdk1.6.0_10/bin目录,然后找到native2ascii这个文件,2,打开3,粘贴,回车即得编码) 6.在login.jsp这个页面里的表单中加入错误提示信息。 <table border="0"> <tr> <td>用户名:</td> <td><html:text property="username" /></td> <td><html:errors property="username"/></td> </tr> <tr> <td>密码:</td> <td><html:password property="password" /></td> <td><html:errors property="password"/></td> </tr> <tr> <td colspan="2" align="center"><html:submit value="提交" /></td> </tr> </table> 7.再进入到action包中,在LogonAction.java中修改execute方法。 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { LoginForm loginForm = (LoginForm) form; if(loginForm.getUsername().equals("robin")&&loginForm.getPassword().equals("123")) { request.getSession().setAttribute("uname", loginForm.getUsername()); //跳转是通过返回值跳转。 return mapping.findForward("suc"); } else { ActionErrors errors=new ActionErrors(); errors.add("loginerror", new ActionMessage("login.error")); this.addErrors(request, errors); return mapping.getInputForward(); } } 8.在ApplicationResources.properties文件下加入错误信息 login.error=/u7528/u6237/u540d/u6216/u8005/u5bc6/u7801/u9519/u8bef/uff01 9.新建跳转页suc.jsp <%@page import="java.util.*" %> <%@ page contentType="text/html;charset=GBK"%> <html> <head> <title>success</title> </head> <body> ${uname } 登陆成功! </body> </html> 10.配置跳转路径,在struts-config.xml中加入路径配置 <action-mappings > <action attribute="loginForm" input="/jsp/login.jsp" name="loginForm" path="/login" scope="request" type="com.proper.struts.action.LoginAction"> <set-property property="cancellable" value="true" /> <forward name="suc" path="/jsp/suc.jsp"/> </action> </action-mappings> 11.Login.jsp页面中加入显示错误信息 <body> <center> <font color="red"><html:errors property="loginerror"/></font> <html:form action="login.do"> <table border="0"> <tr> <td>用户名:</td> <td><html:text property="username" /></td> <td><html:errors property="username"/></td> </tr> 。。。 显示页面如下:
图1
图2
图3