JAVA-Struts2学习之环境搭建

Struts2是一个javaee框架,主要作用是处理前后台之间的数据交互。struts2是取代jsp+servlet+javabean模式中的servlet的,但是它比servlet功能更强,有更多的功能封装。

Struts2是在WebWork2基础发展而来的。和struts1一样,Struts2也属于MVC框架。值得注意的是:尽管Struts2和struts1在名字上的差别不是很大,但Struts2和struts1在代码编写风格上几乎是不一样的。那么既然有了struts1,为何还要推出struts2。主要是因为struts2有以下优点:

1 > 在软件设计上Struts2没有像struts1那样跟ServletAPI和strutsAPI有着紧密的耦合,Struts2的应用可以不依赖于ServletAPI和strutsAPI。 Struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计。

2> Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能。

3> Strut2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。在Struts1中,如果我们要实现同样的功能,就必须向Struts1的底层实现BeanUtil注册类型转换器才行。

4> Struts2提供支持多种表现层技术,如:JSP、freeMarker、Velocity等。

5> Struts2的输入校验可以对指定方法进行校验,解决了Struts1的不足。

6> 提供了全局范围、包范围和Action范围的国际化资源文件管理实现。


Struts2环境的搭建:

1.先去下载struts2(这里用的是2.5版本)的jar包http://struts.apache.org/download.cgi#struts252

2.在IDE工具中(MYEclipse/IDEA等)创建一个web项目,将下列jar(这是搭建一个struts2.5版本环境所需的最少jar包,其他版本可能稍有不同)放到WEB-INF/lib文件夹下

3.在src下创建struts.xml文件,其中代码如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
</struts>
4.struts1.x中,struts框架是通过Servlet启动的。在struts2,struts框架是通过Filter启动的。所以在web.xml中配置一个filter,代码如下

<?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_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>testStruts2</display-name>
	<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>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>
5.此时,将项目部署到tomcat服务器(其他服务器也可),启动tomcat,如果控制台没有报错,则说明环境搭好了。

6.接下来做一个struts2的简单应用,在src下创建一个类,代码如下

package cn.purple.struts.action;

public class TestAction {
	private String message;
	
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}

	public String testStruts2() {
		this.message = "我的第一个struts2应用";
		return "success";
	}
}
其中私有属性message主要是用来传递数据的,它可以拿到前端的同名变量的数据,也可以在响应请求时将后台的数据带到前台,但是必须要实现getset方法。方法testStruts2()是请求访问时处理业务的,返回值必须是String。

7.在struts.xml文件中的<struts>标签下新增如下配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<package name="testStu" namespace="/test" extends="struts-default">
		<action name="testAction" class="cn.purple.struts.action.TestAction" method="testStruts2">
			<result name="success">/WEB-INF/page/test.jsp</result>
		</action>
	</package>
</struts>
<package>的name可以随意命名(最好有意义),这个名字主要是在别的地方引用的时候使用的。namespace也是随意命名 (最好有意义),但是必须以/开头,也可以多加/(如/test/abc/def),namespace主要是为了给action分批,比如一般给一个项目的不同模块配置不同的<package>,命名不同的namespace,同时namespace是组成url的一部分。

一个<package>下可以有多个<action>。<action>的name也是随意命名(最好有意义),action的name也是组成url的一部分,上述配置的意思是,当地址栏中访问的url为127.0.0.1:8080/testStruts2/test/testAction(127.0.0.1:8080表示访问本机的8080端口,/testStruts2为项目创建时设置的web应用名称,/test为namespace的值,/testAction为action的name的值)时,请求就会被定位到cn.purple.struts.action.TestAction.java类的testStruts2方法。

一个<action>下可以有多个<result>。<result>的name是用来匹配所属<action>的方法返回值的,<result>的值是指定请求被响应后要显示的页面

的url。上述代码中的<result>的意思是,当testStruts2()方法的返回值为“success”时则显示/WEB-INF/page/test.jsp页面。

8.在/WEB-INF下创建page文件夹,在此文件夹下创建test.jsp,在test.jsp页面的<body>标签中用${message}就可以接收到testStruts2()方法返回的

值“我的第一个struts2应用”。

9.将项目部署后,启动服务器,在地址栏中输入127.0.0.1:8080/testStruts2/test/testAction,查看效果。





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值