Struts2基本使用方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kingslave1/article/details/78058813
一、 Struts2框架下载方法
1、 访问http://struts.apache.org/download.cgi#struts25101
2、 选择合适的版本进行下载
如果想使用Struts2框架的全部内容则可选择Full Distribution(完整版)
如果仅需要该框架的基本内容则可选择Essential Dependencies Only(基础包)

在这里我选择下载的是Full Distribution:struts-2.5.10.1-all.zip (65MB)

二、使用Struts2框架的基本步骤是:
1、引入Struts 2工程所需运行库文件。
2、创建或配置web.xml文件
3、创建一个Action类(控制器)
4、创建并配置struts.xml(必需)、struts.properties(可选)文件。
5、创建具体页面(视图层)
下面以实现简单注册用户为例,详细过程如下:
Struts2Demo1为项目名
1、 引入Struts 2工程所需运行库文件。
shot6

解压下载的Struts2源码包后,将lib文件夹中需要的jar文件复制到Struts2Demo1/WebRoot/WEB-INF/lib/目录下。
如果因为版本不同而不知道该复制哪些,则可下载Essential Dependencies Only版本的框架,该版本中lib文件夹下的jar文件全都是必需的
下面简单介绍下几个常用的jar包:
(1) struts2-core-2.5.10.1.jar:Struts2的核心库
(2) ognl-3.1.12.jar:OGNL表达式语言,Struts2支持EL表达式
(3) freemarker-2.3.19.jar:表示层框架,定义了Struts2的可视组件主题
(4) commons-lang3-3.4.jar:对JDK中的java.Lang的补充
(5) commons-io-2.4.jar:支持附件上传
(6) commons-fileupload-1.3.2.jar:支持文件上传
(7) javassist-3.20.0-GA.jar:字节码的类库
(8) log4j-api-2.7.jar:日志管理

2、 创建或配置web.xml文件
shot5

(1)web.xml路径应为Struts2Demo1/WebRoot/WEB-INF/web.xml
(2)在标签后、标签前添加如下内容:

<filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

注1:
Struts2的核心控制器FilterDispatcher被设计成了过滤器,通过标签引入。
说明所有客户端请求都经由FilterDispatcher处理,并把过滤后的请求交给Struts2进行处理。
注2:
由于版本不同,StrutsPrepareAndExecuteFilter 所在的包位置也有可能并不是org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter,如果不是,则需要改为你的StrutsPrepareAndExecuteFilter类所在的实际包位置,例如org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

我的web.xml详细代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
version="3.1">
  <display-name>Struts2Demo1</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

3、 创建一个Action类(控制器)
shot4

(1)Struts2直接使用Action来封装HTTP请求参数,因此Action类应该包含与请求相对应的属性,并为该属性提供对应的setter和getter方法。
(2)为Action类里增加一个execute方法,因为Struts2框架默认会执行这个方法。这个方法本身并不做业务逻辑处理,而是调用其他业务逻辑组件完成这部分工作。
(3)Action类返回一个标准的字符串,该字符串是一个逻辑视图名,该视图名对应实际的物理视图。
我们要完成的是用户注册功能,因此最简单的当满足要求时Action返回success表示成功,否则返回input表示需要重新输入注册信息

下面是RegisterAction.java的详细代码:

package struts2demo1;

public class RegisterAction {
	private String username;
	private String password;
	private String confirmPassword;
	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;
	}
	public String getConfirmPassword() {
		return confirmPassword;
	}
	public void setConfirmPassword(String confirmPassword) {
		this.confirmPassword = confirmPassword;
	}
	public String execute() throws Exception{
		if(password.equals(confirmPassword)&&!username.trim().equals("")){
			return "success";
		}else{
			return "input";
		}
	}
}

Action有一下特点:
Struts2框架中Action是一个POJO,没有被代码污染。
Struts2中的Action的execute方法不依赖于servlet API,改善了Struts1中耦合过于紧密,极大方便了单元测试。
Struts2的Action无须用ActionForm封装请求参数。
相对Struts1框架而言,Struts2的逻辑视图不再是ActionForward对象,而是一个普通的字符串,利于分离和复用。

4、 创建并配置struts.xml(必需)、struts.properties(可选)文件
Struts2框架的核心配置文件就是struts.xml,该文件主要负责Struts2应用中各Action的具体实现逻辑。struts.xml会根据不同请求找到具体的Action,然后根据Action返回的逻辑视图名找到具体的物理视图。
shot3

在/Struts2Demo1/src文件夹下创建struts.xml

<?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>
    <package name="Struts2Demo1" extends="struts-default">
        <action name="register" class="struts2demo1.RegisterAction">
            <result name="success">success.jsp</result>
            <result name="input">register.jsp</result>
        </action>
    </package>
</struts>

在action标签中定义了name和class。name属性对应的是用户URL请求中的action名,比如在本应用中,用户请求为http://localhost:8080/Struts2/loginUser.action,那么name属性就应该为loginUser。class属性是处理请求的实现类(注意:要包含完整路径),本应用的实现类是wwfy.action.user.UserAction。
result标签定义逻辑视图和物理视图之间的映射,在我们的Action中,如果返回的字符串是"success”则由对应的success.jsp页面进行处理;如果返回的字符串是"input”则由register.jsp页面进行处理。

5、 创建具体页面(视图层)

shot2

(1) 注册页面:register.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'MyJsp.jsp' starting page</title>

	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <form action="register.action" method="post">
    <table>
	    <tr>
		    <td>姓名:</td>
		    <td><input type="text" name="username"/></td>
	    </tr>
	    <tr>
		    <td>密码:</td>
		    <td><input type="password" name="password"/></td>
	    </tr>
	    <tr>
		    <td>确认密码:</td>
		    <td><input type="password" name="confirmPassword"/></td>
	    </tr>
	    <tr>
		    <td><input type="submit" value="注册" name="submit"/></td>
		    <td><input type="reset" value="重置" name="reset"/></td>
	    </tr>
    </table>
    
    </form>
  </body>
</html>

(2) 注册成功页面:success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'success.jsp' starting page</title>

	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  	注册成功<br>
  </body>
</html>

以下是完整的目录结构:
shot1

猜你喜欢

转载自blog.csdn.net/kingslave1/article/details/78058813
今日推荐