加入struts2所依赖的包
一 , 清除当前线程,和核心过滤器的配置,配置在web.xml文件中
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 配置strut2的清除过滤器 -->
<filter>
<filter-name>struts2-cleanup</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置struts2的核心过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
二, 在src文件夹下创建struts.xml文件
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 指定编码 -->
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<!-- 默认文中文 -->
<constant name="struts.local" value="zh_CN"></constant>
<!-- 设置应用的国际化资源文件,多个文件中间可以用逗号隔开 -->
<constant name="struts.custom.i18n.resources"
value="messageResource">
</constant>
<!-- 开发模式 -->
<constant name="struts.devMode" value="true"></constant>
<!-- 默认主题为simple -->
<constant name="struts.ui.theme" value="simple"></constant>
<package name="hello" extends="struts-default">
<action name="login" class="com.xiu.LoginAction">
<result>/welcome.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>
三, 在src下创建国际化资源文件messageResource_zh_CN.properties
title.text=struts入门
label.name=姓名:
label.submit=提交
label.reset=重置
label.welcome=你好,欢迎学习struts2
userName.error=对不起,用户名不能为空!
四,创建一个LoginAction的业务 控制类
package com.xiu;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = 3738256876749262093L;
private String userName;
private String result;// 存放处理结果
public String execute() {
System.out.println("execute........");
result = "存放处理结果";
return SUCCESS;
}
/**
* 验证消息 该方法会执行在execute前面
*/
public void validate() {
System.out.println("validate.........");
if (this.userName == null || this.userName.trim().length() < 1) {
// 设置错误消息 key,value ,通过key(userName)取值,也可以通过struts2的标签去
//userName.error必须在国际化文件中有配置
addFieldError("userName", getText("userName.error"));
}
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
}
五,在WebRoot下创建index.jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!-- struts2的标签 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><s:text name="title.text" /> <!-- s:text标签输出国际化消息内容,name指定消息key -->
</title>
</head>
<body>
<s:form action="login">
<s:text name="label.name"></s:text>
<s:textfield name="userName"></s:textfield>
<s:submit key="label.submit">
<!-- s:submit标签用于生成表达提交按钮,按钮上的文字由消息key属性指定,直接向消息资源文件中提取 -->
</s:submit>
<s:reset key="label.reset"></s:reset>
</s:form>
<s:if test="hasFieldErrors()">
<!-- s:if调用 hasFieldErrors()方法判断getFieldErrors()返回值是否为空-->
<s:fielderror />
<!-- s:fielderror调用 getFieldErrors()方法返回值-->
</s:if>
</body>
</html>
六,在WebRoot下创建welcome.jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!-- struts2的标签 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><s:text name="title.text" /> <!-- s:text标签输出国际化消息内容,name指定消息key -->
</title>
</head>
<body>
${userName},
<!-- 使用OGNL表达式读取action中实例保存的处理结果 -->
<s:text name="label.welcome"></s:text>
<br>
${result}
<!-- 使用OGNL表达式读取action中实例保存的处理结果 -->
</body>
</html>