使用struts2时需要注意Struts2的版本问题,这里使用的是Struts2 2.3版本
开发一个简单的Struts2应用: 开发一个Struts2应用需要有: 1.web.xml的配置; 2.struts.xml的配置; 3.导入Struts2所需要的jar包;
1.web.xml文件的配置:
在web.xml文件中写下如下配置信息:(配置核心Filter)
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.配置struts.xml文件
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<constant name="struts.devMode" value="true'/>
<package name="Demo" namespace="/" extends="struts-default">
<action name="*">
<result>/WEB-INF/content/{1}.jsp</result> //注:在WEB-INF目录下创建一个content文件夹,把jsp文件放入这个文件夹中
</action>
</package>
代码:
<action name="*">
<result>/WEB-INF/content/{1}.jsp</result>
</action>
name="*" 和<result>/WEB-INF/content/{1}.jsp</result>
表示:对任意的请求,将直接呈现/WEB-INF/content/下同名的jsp文件
3.导入Struts2所需需要的jar包
这里,就可以在web应用里面使用Struts的基本功能了;
之后,可以进行简单的Struts2的应用;
在WEB-INF/content目录下写一个JSP代码
loginForm.jsp:
<%@ page language="java" contentType="text/html; charset=GBK"%> <%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> <head> <title><s:text name="loginPage"/></title> </head> <body> <s:form action="login"> <s:textfield name="username" key="user"/> <s:textfield name="password" key="pass"/> <s:submit key="login"/> </s:form> </body> </html>
在此之前需要进行国际化,配置Struts2的国际化;
在原来的Struts2配置文键struts.xml中加入下面的配置信息:
<constant name="struts.custom.i18n.resources" value="mess"/>
mess.properties配置文件如下: loginPage=登录页面 errorPage=错误页面 succPage=成功登录 failTip=对不起,您不能登录! succTip=欢迎,{0},您已经成功登录! user=用户名 pass=密 码 login=登录
使用native2ascii工具国际化资源文件才可以使用;
为防止乱码,可以这样:
native2ascii -encoding UTF-8 mess.properties a.properties 之后吧原来的mess.properties删除,把a.properties文件改名为mess.properties
在浏览器输入:http://localhost:8080/Struts2Demo/loginForm 可以看见登录页面;(注:不能输入loginForm.jsp)
接下来处理form表单提交的action;
form表单指定提交的action为login,所以需要定义一个Struts2的Action,类名为LoginAction.java 代码如下:
package Demo;
import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{ private String username; 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; }
[@Override](https://my.oschina.net/u/1162528)
public String execute() throws Exception {
if(getUsername().equals("123")&&getPassword().equals("123")){
ActionContext.getContext().getSession().put("user", getUsername());
return SUCCESS;
}
return ERROR;
}
}
在为表单提供一个错误页面和登录成功页面error.jsp和welcome.jsp
error.jsp
<%@ page language="java" contentType="text/html; charset=GBk"%> <%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> <head> <title><s:text name="errorPage"/></title> </head> <body> <s:text name="failTip"/> </body> </html>
welcome.jsp
<%@ page language="java" contentType="text/html; charset=GBk"%> <%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> <head> <title><s:text name="succPage"/></title> </head> <body> <s:text name="succTip"> <s:param>${sessionScope.user}</s:param> </s:text> </body> </html>
之后再为表单提供Struts的配置:struts.xml中加入下面的配置信息:
<action name="login" class="Demo.LoginAction"> <result name="success">/WEB-INF/content/welcome.jsp</result> <result name="error">/WEB-INF/content/error.jsp</result>
</action>
这样,Struts2的简单应用就完成了;