标签:line ted order 工具类 ant 新建 prefix ognl except
1、web.xml文件,配置核心Filter
1: <?xml version="1.0" encoding="UTF-8"?>2: <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3: xmlns="http://java.sun.com/xml/ns/j2ee"
4: xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"
5: xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
6: id="WebApp_9" version="2.4">7: <filter>8: <filter-name>struts2</filter-name>9: <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>10: </filter>11: <filter-mapping>12: <filter-name>struts2</filter-name>13: <url-pattern>/*</url-pattern>
14: </filter-mapping>15: <filter>16: <filter-name>struts-cleanup</filter-name>17: <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>18: </filter>19: <filter-mapping>20: <filter-name>struts-cleanup</filter-name>21: <url-pattern>/*</url-pattern>22: </filter-mapping>23: </web-app>
2、将框架的类库放在WEB-INF/lib路径下
3、用户请求页面
1: <%@ page language="java" contentType="text/html; charset=UTF-8"2: pageEncoding="UTF-8"%>
3: <%@ taglib prefix="s" uri="/struts-tags" %>4: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">5: <html>6: <head>7: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">8: <title>login</title>9: </head>10: <body>11: <s:form action="login" align="center">12: <s:textfield name="username" key="user" value="用户名"/>13: <s:textfield name="password" key="pass" value="密 码"/>14: <s:submit value="登录" key="login"/>15: </s:form>16: </body>17: </html>
4、实现控制器类
Action就是一个包含execute方法的普通java类。代码如下
LoginAction.java
1: package cc.openhome;
2:3: import com.opensymphony.xwork2.Action;
4: import com.opensymphony.xwork2.ActionContext;
6:7: public class LoginAction implements Action {8: private String username;
9: private String password;
10: public String getUsername() {
11: return username;
12: }13: public void setUsername(String username) {14: this.username = username;
15: }16: public String getPassword() {
17: return password;
18: }19: public void setPassword(String password) {20: this.password = password;
21: }22:23: public String execute() throws Exception {24: // TODO Auto-generated method stub
25: ActionContext ctx=ActionContext.getContext();26: if(getUsername().equals("nihao") && getPassword().equals("nihao")){27: ctx.getSession().put("user", getUsername());
28: return SUCCESS;
29: }else{
30: return ERROR;
31: }32: }33: }34:
5、配置Action
修改struts.xml如下:struts.xml
1: <?xml version="1.0" encoding="UTF-8" ?>2: <!DOCTYPE struts PUBLIC3: "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
4: "http://struts.apache.org/dtds/struts-2.3.dtd">
5:6: <struts>7: <package name="struts2" extends="struts-default">8: <action name="login" class="cc.openhome.LoginAction">9: <result name="success">/success.jsp</result>
10: <result name="error">/error.jsp</result>
11: </action>12: </struts>
6、success.jsp页面
1: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>2: <%@ taglib prefix="s" uri="/struts-tags" %>3: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4: <html>5: <head>6: <title>success</title>7: </head>8: <body>9: <%=request.getAttribute("username")%>:您已经登录!
10: </body>11: </html>12:
7、error.jsp页面
1: <%@ page language="java" contentType="text/html; charset=UTF-8"2: pageEncoding="UTF-8"%>
3: <%@ taglib prefix="s" uri="/struts-tags"%>4: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">5: <html>6: <head>7: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">8: <title>error</title>9: </head>10: <body>11: <%=request.getAttribute("username")%>:登录失败,请重新登录!
12: </body>13: </html>
8、运行结果
1、定义两个语言资源文件,并且命名为message_zh_CN.properties和message_en_US.properties
message_zh_CN.properties
1: successPage=\u767B\u5F55\u6210\u529F\u9875\u97622: failPage=\u767B\u5F55\u5931\u8D25\u9875\u97623: user=\u7528\u6237\u540D4: pass=\u5BC6\u78015: login=\u767B\u5F556: welcome=\u6B22\u8FCE\uFF0C7: fail=\u767B\u5F55\u5931\u8D25\uFF0C
message_en_US.properties
1: successPage=successPage2: failPage=failPage3: user=username4: pass=password5: login=login6: welcome=welcome,7: fail=fail,
2、修改success.jsp
输出国际化信息的方式有两种:
(1)、<s:text name=”welcome” />
(2)、<s:property value=”%{getText(“welcome”)}” />
1: <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>2: <%@ taglib prefix="s" uri="/struts-tags" %>3: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4: <html>5: <head>6: <title><s:text name="successPage"/></title>
7: </head>8: <body>9: <%=request.getAttribute("username")%>:<s:text name="welcome"/>10: 您已经登录!11: </body>12: </html>
3、修改error.jsp
1: <%@ page language="java" contentType="text/html; charset=UTF-8"2: pageEncoding="UTF-8"%>
3: <%@ taglib prefix="s" uri="/struts-tags"%>4: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">5: <html>6: <head>7: <title><s:text name="successPage"/></title>
8: </head>9: <body>10: <%=request.getAttribute("username")%>:<s:text name="fail"/>请重新登录!11: </body>12: </html>
4、在struts.xml中添加<constant name="struts.custom.i18n.resources" value="message"/>
1: <?xml version="1.0" encoding="UTF-8" ?>2: <!DOCTYPE struts PUBLIC3: "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
4: "http://struts.apache.org/dtds/struts-2.3.dtd">
5:6: <struts>7: <constant name="struts.custom.i18n.resources" value="message"/>8: <action name="login" class="cc.openhome.LoginAction">9: <result name="success">/success.jsp</result>
10: <result name="error">/error.jsp</result>
12: </action>13: </struts>
5、运行结果
继承ActionSupport类,它是一个工具类,实现了Action接口,还实现了Validateable接口,提供了数据校验功能。在Validateable接口中,定义了一个validate()方法,如果校验表单输入域出现错误,则将错误添加到ActionSupport类的fieldErrors域中,通过OGNL表达式负责输出。则LoginAction修改后为:
1、LoginAction.java
1: package cc.openhome;
2:3: import com.opensymphony.xwork2.Action;
4: import com.opensymphony.xwork2.ActionContext;
5: import com.opensymphony.xwork2.ActionSupport;
6:7: public class LoginAction extends ActionSupport implements Action {8: private String username;
9: private String password;
10: public String getUsername() {
11: return username;
12: }13: public void setUsername(String username) {14: this.username = username;
15: }16: public String getPassword() {
17: return password;
18: }19: public void setPassword(String password) {20: this.password = password;
21: }22:23: public String execute() throws Exception {24: // TODO Auto-generated method stub
25: ActionContext ctx=ActionContext.getContext();26:27: if(getUsername().equals("nihao") && getPassword().equals("nihao")){28: ctx.getSession().put("user", getUsername());
29: return SUCCESS;
30: }else{
31: return ERROR;
32: }33: }34: public void validate(){35: if(getUsername()!=null || getUsername().trim().equals("")){36: addFieldError("username", "user.required");37: }38: if(getPassword()!=null || getPassword().trim().equals("")){39: addFieldError("password", "pass.required");40: }41: }42: }43:
2、修改struts.xml
1: <?xml version="1.0" encoding="UTF-8" ?>2: <!DOCTYPE struts PUBLIC3: "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
4: "http://struts.apache.org/dtds/struts-2.3.dtd">
5:6: <struts>7: <constant name="struts.custom.i18n.resources" value="message"/>8: <action name="login" class="cc.openhome.LoginAction">9: <result name="success">/success.jsp</result>
10: <result name="error">/error.jsp</result>
11: <result name="input">/denglu.jsp</result>
12: </action>13: </struts>
3、运行结果
(1)、message_zh_CN.properties
1: successPage=\u767B\u5F55\u6210\u529F\u9875\u97622: failPage=\u767B\u5F55\u5931\u8D25\u9875\u97623: user.required=\u7528\u6237\u540D\u5FC5\u987B\u6B63\u786E\u8F93\u51654: pass.required=\u5BC6\u7801\u5FC5\u987B\u6B63\u786E\u8F93\u51655: user=\u7528\u6237\u540D6: pass=\u5BC6\u78017: login=\u767B\u5F558: welcome=\u6B22\u8FCE\uFF0C9: fail=\u767B\u5F55\u5931\u8D25\uFF0C
(2)、message_en_US.properties
1: successPage=successPage2: user.required=user.required3: pass.required=pass.required4: failPage=failPage5: user=username6: pass=password7: login=login8: welcome=welcome,9: fail=fail,
(3)、修改validate()方法
1: public void validate(){2: if(getUsername()!=null || getUsername().trim().equals("")){3: addFieldError("username", getText("user.required"));4: }5: if(getPassword()!=null || getPassword().trim().equals("")){6: addFieldError("password", getText("pass.required"));7: }8: }
(4)、运行结果
5、使用Struts2的校验框架
如果不需要写大量代码,可以用基于XWork的validator框架,新建一个校验规则文件即可。把文件命名为: LoginAction-validation.xml
LoginAction-validation.xml
1: <?xml version="1.0" encoding="UTF-8"?>2: <!DOCTYPE validators PUBLIC3: "-//Apache Struts//XWork Validator 1.0//EN"
4: "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
5: <validators>6: <field name="username">
7: <field-validator type="requiredstring">
8: <message key="user.required"/>
9: </field-validator>10: </field>11: <field name="password">
12: <field-validator type="requiredstring">
13: <message key="pass.required"/>
14: </field-validator>15: </field>16: </validators>
标签:line ted order 工具类 ant 新建 prefix ognl except
原文地址:http://www.cnblogs.com/liuzhongfeng/p/6131039.html