技术帮
 

Struts2项目搭建

本网站内容基本都是原创作品,未得到作者同意也欢迎转载
转载请注明出处:技术帮
说你呢,赶紧长按二维码,然后点击识别图中二维码

任何技术难题可进QQ群提问:【小崔说编程
对于提问的原则是:没有你不能问的,只有我不会答的

1472955908895017376.png说两句


本文将演示如何搭建一个Struts2项目。

本文的目标如下:

1 创建一个名称为st_demo的web项目

2 实现struts2的支持

3 当用户访问地址如http://localhost:8080/st_demo/page1.do,将调用DemoAction中的page1方法,最后被分发到page1.jsp页面。


项目文件结构如下:

blob.png


1473058358717068189.png 创建web项目,并准备必要的jar包

在MyEclipse下创建web project,项目命名为st_demo。当然,关于项目的命名不强求,可以根据喜好自己命名,但一定要注意项目命名的大小写的问题。


重点是准备Struts2必要的jar文件。

Struts2目前最新版本为2.5.2,官网下载地址为:http://struts.apache.org/download.cgi#struts252

可下载的选项如下,推荐下载All Dependencies包,压缩包大小为19M。

blob.png

基础的Struts项目只需要以下几个jar包:

jar包说明
struts2-core-2.5.2.jar核心Struts2
ognl-3.1.10.jarStruts2提供的标签库,类似实现jsp中的jstl的功能
log4j-api-2.6.2.jar日志功能
javassist-3.20.0-GA.jar实现动态分析、执行字节码的功能,由日本人开发的代替反射功能的类库
freemarker-2.3.23.jar提供freemarker模板功能
commons-logging-1.1.3.jar日志功能
commons-lang3-3.4.jar
commons-io-2.4.jarapache提供的解决io的类库,主要为了文件上传下载
commons-fileupload-1.3.2.jarapache提供的文件上传下载类库

将这些jar文件复制到web项目下/WebRoot/WEB-INF/lib文件夹中,如果复制成功,将在项目上的Web App Libraries下看到新加入的jar包。

blob.png

【lib文件夹在这里】


blob.png

【在项目中看到Web App Libraries下的jar包】

1472995996528030644.png注意:这个Web App Libraries是在MyEclipse下可以看到的,其他开发工具不一定有这个虚文件夹。


 配置web.xml文件

修改项目的web.xml文件如下:

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

	<display-name>Struts</display-name>

	<filter>
		<!-- 配置Struts2核心Filter的名字 -->
		<filter-name>struts2</filter-name>
		<!-- 配置Struts2核心Filter的实现类 -->
		<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<!-- 配置Filter拦截的URL -->
	<filter-mapping>
		<!-- 配置Struts2的核心FilterDispatcher拦截所有用户请求 -->
		<filter-name>struts2</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>
</web-app>

可以看出,Struts2在web.xml文件中配置了一个过滤器,通过过滤器处理所有用户的请求。

filter-class项:这一项对于不同版本的struts是有不同的,这里是提供的2.5.X版本的struts配置,对于2.3版本的似乎是org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。

url-pattern项:*.do定义的是对url的扩展名匹配,即所有以.do后缀结束的uri才会被处理。


 配置struts.xml文件

struts.xml的内容如下,该文件必须放在项目的源文件夹下,

blob.png

<?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>
	<!-- 开发模式 -->
	<constant name="struts.devMode" value="true" />
	<!-- 配置监听的扩展名 -->
	<constant name="struts.action.extension" value="do" />

</struts>

这是基础的struts.xml的结构,后面将向该文件中添加action与url的匹配设置。


 创建DemoAction类

该类用于处理用户的请求,属于MVC的Control层。

DemoAction类推荐继承自ActionSupport类,ActionSupport类是Struts2提供的用于支持Action的类。

DemoAction类中创建一个page1方法。

目标:当用户访问uri为/demo/page1.do的时候,将由DemoAction类中的page1方法处理用户的请求。

DemoAction类代码如下:

package com.jiisb.app.action;

import com.opensymphony.xwork2.ActionSupport;

public class DemoAction extends ActionSupport{
	public String page1() {
		
		return SUCCESS;
	}
}

看起来代码非常简单。

SUCCESS是ActionSupport类中定义的一个静态变量,其定义如下:

  public static final java.lang.String SUCCESS = "success";

可以看出SUCCESS其实是一个值为success的字符串


 创建page1.jsp页面

page1.jsp页面只是显示一些静态的文字内容,代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
<meta charset="UTF-8">
<title>Struts演示</title>
</head>
<body>
这是我的第一个Struts页面
</body>
</html>

可以看到本页面只是静态的显示一行文字。

该JSP文件被放置在/WEB-INF/jsp/文件夹下。

1472995996528030644.png注意:jsp文件被放置在WEB-INF下,将绝对不可能直接通过URL访问,只能通过Struts进行视图渲染。


 在struts.xml文件中添加action配置

这一步的配置将用户访问的url、Action方法、jsp页面结合到一起,即用户访问http://localhost:8080/st_demo/demo/page1.do将由Action处理,最后被分发到page1.jsp页面。

最总struts.xml文件中添加配置信息如下:

    <package name="demo" namespace="/demo" extends="struts-default">
    	<action name="page1" class="com.jiisb.app.action.DemoAction" method="page1">
    		<result name="success">/WEB-INF/jsp/page1.jsp</result>
    	</action>
    </package>

这段代码中重要的项目如下:

package中的namespace属性:代表了用户访问地址的前半部分;

action中的name属性:代表了用户访问地址的后半部分;

因此当用户访问http://localhost:8080/st_demo/demo/page1.do后,将调用DemoAction.page1方法。

在action标签中的class属性和method属性定义了要被调用的类和方法。

result标签定义了方法返回值的处理方式。这里定义如果page1方法的返回值为success则分发到/WEB-INF/jsp/page1.jsp页面。


至此,Struts2项目配置完成,将项目发布到tomcat,然后访问http://localhost:8080/st_demo1/demo/page1.do,将显示page1.jsp,如果浏览器看到“这是我的第一个Struts页面”的文字内容,说明项目配置成功。