搭建Struts2开发环境并且完成一个HelloWorld实例

Struts2是在Struts1和WebWork的技术基础上进行了合并的全新MVC框架,它与Struts1差别巨大,不能理解为Struts1的升级版,它是以Xwork为核心,可以理解为WebWork的升级版。

首先,导入jar包是必须的了,下图为Struts2工作至少需要导入的5个核心包,版本根据自己的实际情况来选择:


搭建Struts2开发环境并且完成一个HelloWorld实例_第1张图片


jar包可以在官网下载,或者加群102992282在群文件中下载。


然后在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>

 在src下,创建名为struts.xml的配置文件,添加该XML的版本信息及DTD,代码如下:


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

然后写我们的第一个Action,代码如下:


package hxl.insist;

public class HelloDemo {

	public HelloDemo() {
		System.out.println("实例化HelloDemo");
	}
	
	public String sayhi() {
		return "hello";
	}
}

注意:方法是public的,返回类型为String,参数列表为空。

在struts.xml的配置文件中配置一下这个Action,代码如下:


<struts>
	<!-- name自己随便命名,一般情况下是项目的一个模块名,extends属性值和我写的一样就ok了 -->
	<package name="sayhi" namespace="/sayhi" extends="struts-default">
	<!-- action元素的name属性和上面的namespace属性构建成一个访问路径,method是要访问的Action的方法,class属性是我们自己写的Action -->
		<action name="hellodemo" method="sayhi" class="hxl.insist.HelloDemo">
		<!-- name属性是我们那个sayhi方法返回的字符串,下面是我们jsp存放的路径 -->
			<result name="hello">
				/WEB-INF/page/hello.jsp
			</result>
		</action>
	</package>
</struts>

通过访问http://localhost:8080/struts/sayhi/hellodemo这个路径就可以看到我们在hello.jsp里定义的内容了。

注意:当我们每次访问这个URL的时候,我们看到控制台都会打印"实例化HelloDemo",所以通过这个现象我们可以知道,每次访问Action的时候,web容器都会创建一个Action对象,所以这个Action是线程安全的,但是可能会影响程序的效率。

你可能感兴趣的:(框架,struts2,线程安全)