对于struts2的介绍,这里略过,今天,这里主介绍struts2.3.8的基本配置和实现一个简单的Demo.
1. 环境
struts2.3.8下载地址:http://struts.apache.org/download.cgi#struts238
2.
添加引用(copy jar包至WebContent/WEB-INF/lib目录下)
若使用struts2.3.8总共需要引入以下10个jar包.分别是: struts2-core-2.3.8.jar、xwork-core-2.3.8.jar、ognl-3.0.6.jar、commons-io-2.0.1.jar、freemarker-2.3.19.jar、javassist-3.11.0.GA.jar、commons-lang3-3.1.jar、commons-lang-2.4.jar、commons-logging-1.1.1.jar、commons-fileupload-1.2.2.jar
3. 修改web.xml,增加struts配置
<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>
配置说明: filter->filter-name:设定filter别名
filter->filter-class:设定filter对应的类名(全路径). struts2允许用户自定义filter.
filter-mapping->filter-name:用于指定用于处理url-pattern的struts filter 别名.
filter-mapping->url-pattern:设定url匹配规则,可用正则表达式. /*表示站点根目录所有文件.
4. 添加struts.xml.并存放于/WebContent/WEB-INF/classes文件夹下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!--这里放置struts相关配置-->
</struts>
5.
经过以上步骤,你可以启动你的web server,确认是否有Exception. 如果发生异常, 请至我的java异常收集与整理查找解决方案.
6.
接下来,引入Demo
首先, 编写Action.此处为LoginAction.通常所有Action都会继承至com.opensymphony.xwork2.ActionSupport
, 普遍的做法是编写BaseAction类,并继承ActionSupport
.此为配置入门,让我们看看最原始的写法.
public class LoginAction extends ActionSupport {
public String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String passWord;
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String execute(){
if(!userName.equals("admin")){
super.addFieldError("userName.error", "用户名错误");
return ERROR;
}
if(!passWord.equals("001")){
super.addFieldError("passWord.error", "密码错误");
return ERROR;
}
return SUCCESS;
}
public void validate(){
if(userName==null || userName.length()==0){
super.addActionError("用户名不能为空");
}
if(passWord==null || passWord.length()==0){
super.addActionError("密码不能为空");
}
}
}
7. 于struts.xml中增加action的配置
<struts>
<!-- 配置struts action的后缀,默认为.action 如果没有,则value设为空即可-->
<constant name="struts.action.extension" value="action,do,webwork" />
<package name="struts2" extends="struts-default">
<!-- 这里的method默认是execute,也可显示指定.还有可以通过url指定.eg:login!login.action -->
<action name="login" class="org.lyh.ssh.demo.action.LoginAction" method="execute">
<result name="success" type="redirect">index.jsp</result>
<!-- 当validate方法验证错误时,默认result=input,只有验证通过,才会调用指定的method -->
<result name="input">/pages/login.jsp</result>
<result name="error">/pages/login.jsp</result>
</action>
</package>
</struts>
对于struts的学习,最重要的就是要理解其配置的意义. 代码中以对相关配置做了注解.
8. 编写前台jsp页面
<%@ page language="java" contentType="text/html; charset=BIG5" pageEncoding="BIG5"%>
<%@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>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>User Login</title>
</head>
<body>
<s:form name="form1" action="login.do">
<s:fielderror></s:fielderror><!—mapping addFieldError()-->
<s:actionerror /><!—mapping addActionError()-->
<!—input name应与Action中的属性名一致,才能传值成功-->
<s:textfield name="userName" label="UserName"></s:textfield>
<s:password name="passWord" label="Password"></s:password>
<s:submit label="Login..."></s:submit>
</s:form>
</body>
</html>
在jsp文件中.我们用到了struts tags. 在减少编写的代码量的同时, struts tags提供了更多更强的功能.
9. 结束语: 通过以上步骤, 我们的第一个struts2.3.8的配置及demo就算完成了.文章中没有过多的文字介绍.主要是记录配置、编写步骤. 一步一步引导大家开始struts的应用.
10. 参考文章:
http://hi.baidu.com/xuqiangqiang2/item/a842a24a6d0b2fbedf2a9f89
http://www.cnblogs.com/ITEagle/archive/2010/04/02/1703404.html