一、Struts2快速入门

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mChenys/article/details/84828471

概述

Struts2是一个基于MVC设计模式的Web层框架,是Struts1的下一代产品,在 struts1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

Struts2框架的快速入门

1.下载开发包
官网地址,我这里使用的是2.3.24的版本,在这里可以看到所有版本
下载完后解压struts-2.3.24-all.zip包后,会看到以下目录,这里简单介绍下:

  • apps:Struts2框架提供了一些示例模板
  • libs:Struts2框架开发的jar包
  • docs:Struts2框架开发文档
  • src:Struts2框架源码

2.集成Struts2的jar包
当你打开开发包的libs目录的时候,你会发现多达107个jar包,显然这并不是Struts2必须的核心jar包,那么如果找到他的核心jar包呢?
我们可以从他的示例模板入手,找到开发包下的apps目录,将struts2-blank.war该模板用解压工具解压,这个模板是一个空白模板,它里面包含了Struts2的最核心的13个jar包,如下所示:
在这里插入图片描述
将这目录下的所有jar包拷贝至你的web项目的lib目录下即可。

3.配置Struts2拦截器
前面介绍也说了Struts2是采用拦截器的机制来处理用户的请求,因此应该猜到这一步我们需要在web.xml中配置filter过滤器,改过滤器就是Struts2框架写好的。如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	

	<!-- 配置Struts2拦截器 -->
	<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>


</web-app>

至于该StrutsPrepareAndExecuteFilter过滤器的全路径名称我是怎么找到的呢?
这里介绍2种方式:
第一种还是查看struts2-blank.war这个示例模板,打开WEB-INF\web.xml就可以轻松copy了;
另一种方式就是查看引入的jar包在eclipse上的预览,找到Web App Libraries,这里可以查看到所有引入的jar包,然后找到struts2-core-2.3.24.jar>org.apache.struts2.dispatcher.ng.filter>StrutsPrepareAndExecuteFilter.class,这样选择copy全路径就ok了.例如:
在这里插入图片描述

4.创建响应请求的类
随便创建一个类,例如HelloAction,后缀Action也不是必须的,只是一种Struts2的使用习惯,然后添加一个响应请求的方法,如下所示:

package blog.csdn.net.mchenys;

public class HelloAction {

	/**
	 * 方法权限必须public
	 * 返回值必须String类型
	 * 方法参数必须是空参数
	 * @return
	 */
	public String helloWorld() {
		System.out.println("hello struts2");
		return null;
	}
}

5.创建Struts2的配置文件
Struts2会根据映射文件内配置的属性,通过反射来执行对应类中的对应方法,该文件名称必须是struts.xml,存放路径必须要放在web工程的src目录下,例如:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

	<!-- 包结构 
		name="default" :默认包
		namespace="/"  :匹配的路径以/开头
		extends="struts-default" :默认
	-->
	<package name="default" namespace="/" extends="struts-default">
	
		<!-- 配置请求映射的action
			name="hello" :结合namespace一起使用就是 /hello, 那么匹配的路径就是/hello的请求
			class="blog.csdn.net.mchenys.HelloAction  :响应类的全路径名称
			method="helloWorld"	:响应类中对应的响应方法
		 -->
		<action name="hello" class="blog.csdn.net.mchenys.HelloAction" method="helloWorld"/>
	</package>

</struts>

至于struts.xml的默认配置,以及schema约束去哪里查找,最简单快捷的方式还是查看开发包下的struts2-blank.war这个示例模板,找到struts-2.3.24-all\struts-2.3.24\apps\struts2-blank\WEB-INF\src\java下的struts.xml,如下所示,copy到web工程做修改即可.
在这里插入图片描述

6.测试响应请求
创建测试的jsp页面,添加一个a连接,然后请求路径末尾以/hello结尾即可,因为这个匹配路径必须要和struts.xml中配置的对应,其中/对应的是配置文件中namespace,而hello对应的是action标签中的name属性. 如下所示demo1.jsp,创建在WebContent的demo文件夹内.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>快速部署Struts2</title>
</head>
<body>

	<a href="${pageContext.request.contextPath }/hello">hello Struts2</a>
</body>
</html>

至此,就可以启动web项目,然后在浏览器地址栏中输入http://localhost:8080/web项目名/demo/demo1.jsp,例如:
在这里插入图片描述
此时,点击a链接hello Struts2,如果可以看到控制台输出了hello struts2的字符串,
在这里插入图片描述
说明Struts2成功响应了请求,它成功的调用了响应类的helloWorld响应方法,至此Struts2的部署ok。

猜你喜欢

转载自blog.csdn.net/mChenys/article/details/84828471
今日推荐