惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
NISL@THU
NISL@THU
E
Exploit-DB.com RSS Feed
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
K
Kaspersky official blog
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
S
Schneier on Security
G
GRAHAM CLULEY
The Hacker News
The Hacker News
T
Threat Research - Cisco Blogs
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy & Cybersecurity Law Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
T
Tor Project blog
AWS News Blog
AWS News Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
爱范儿
爱范儿
P
Privacy International News Feed
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
S
Securelist
G
Google Developers Blog
The Last Watchdog
The Last Watchdog
Google Online Security Blog
Google Online Security Blog
美团技术团队
F
Fortinet All Blogs
小众软件
小众软件
Recorded Future
Recorded Future
V
Visual Studio Blog
B
Blog RSS Feed
H
Help Net Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
Blog — PlanetScale
Blog — PlanetScale
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
Martin Fowler
Martin Fowler
Latest news
Latest news
Spread Privacy
Spread Privacy
H
Heimdal Security Blog

博客园 - 空中的风月

EJB 简介 MyBatis 简介 Hibernate 简介 Spring MVC简介 WebLogic中的一些基本概念 浅谈WebLogic和Tomcat Tomcat安装配置 由少林寺比武想到软件行业分工 觀察者模式 SQLServer硬件性能监控列表 数据库方面面试问题 JAVA程序员面试32问 C#常看面试问题以及解答 在做物流的库存管理系统里,需要注意。。。。。 在写自动更新程序中出现的问题 项目管理中可能有的问题,以及如何去面对! 数据库设计中的五个范式 关于软件自动升级程序的设计方法 打印联纸报表时,出现每页都向下跳一点的问题?
Struts2 简介
空中的风月 · 2015-11-11 · via 博客园 - 空中的风月

回顾Struts2的使用过程,网上搜的教程多多少少都会有点问题,重新记录下创建过程,方便查阅。

1、下载Struts2的jar包

下载地址:http://archive.apache.org/dist/struts/binaries/

我用的是struts-2.3.14-all.zip这个版本

2、创建一个web project项目

下面给出所有文件均创建完成后的工程师图。

3、导入Struts2所需jar包

因为只是示例程序,只需要导入Struts 2支持最小的包就可以了,网上很多教程中添加的最小包都有出入,教大家一个保险的方法。

解压刚才下载的压缩包struts-2.3.14-all.zip,在apps文件夹下有个struts2-blank.war包,打开它,到WEB-INF/lib目录下,如下图所示,即为所需的最小包。包含的包应该和具体的Struts版本有关。

4、配置web.xml

下面进入到具体的配置编码阶段。

打开web.xml,修改配置参数,修改后的具体配置如下。

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.   <display-name></display-name>   
  8.     
  9.   
  10.   <filter>  
  11.     <filter-name>struts2</filter-name>  
  12.     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  13.   </filter>  
  14.   <filter-mapping>  
  15.     <filter-name>struts2</filter-name>  
  16.     <url-pattern>/*</url-pattern>  
  17.   </filter-mapping>  
  18.     
  19. </web-app>  

这里需要注意的是

这里面填入的类, 

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

Since Struts 2.1.3, use StrutsPrepareAndExecuteFilter instead or StrutsPrepareFilterand StrutsExecuteFilter if needing using the ActionContextCleanUp filter in addition to this one..即,从Struts 2.1.3起已被标注为过时的,改用StrutsPrepareAndExecuteFilter。
我刚用这个版本的时候还是填的org.apache.struts2.dispatcher.FilterDispatcher
结果报错

  1. ***********************************************************************  
  2. *                               WARNING!!!                            *  
  3. *                                                                     *  
  4. * >>> FilterDispatcher <<< is deprecated! Please use the new filters! *  
  5. *                                                                     *  
  6. *           This can be a source of unpredictable problems!           *  
  7. *                                                                     *  
  8. *              Please refer to the docs for more details!             *  
  9. *            http://struts.apache.org/2.x/docs/webxml.html            *  
  10. *                                                                     *  
  11. ***********************************************************************  


如果你也遇到如上的错误,要仔细再检查下了。

5、配置struts.xml

下面需要创建struts.xml文件,配置strust2要调用的action。直接新建在src目录下,那样部署的时候会自动发布到WEB-INF/classes目录下,或者直接创建在WEB-INF/classes目录下面。

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.3.dtd">  
  5.   
  6.   
  7.     <struts>  
  8.         <package name="struts2" extends="struts-default">  
  9.             <action name="HelloWorld" class="tutorial.HelloWorld">  
  10.                 <result>/HelloWorld.jsp</result>  
  11.             </action>  
  12.         </package>  
  13.     </struts>  


其中,package元素,作用类似于Java包的机制,他是用于分门别类的一个工具,extends属性如他的名字一样,它继承了struts-default这个包的所有信息,一般我们自己创建一个包最好都继承它,因为他为我们提供了绝大部分的功能,你可以在struts2-core的jar包中的struts-default.xml文件中找到这个包。action元素对应与你的表单,例如你的表单的action="welcome",那么该表单提交后就会将参数交予action的name="welcome"的实现类处理。result元素为action的结果,它由动作类返回的控制字段选择。

6、写action类(HelloWorld.java)

这个类主要用于struts2跳转到这个action后。默认执行execute()方法。并根据结果返回字符,然后struts.xml根据返回的字符跳到相应的页面

  1. package tutorial;  
  2. import com.opensymphony.xwork2.ActionSupport;  
  3.   
  4. public class HelloWorld extends ActionSupport  
  5. {  
  6.     public final static String MESSAGE = "Struts2 is up and running ...";  
  7.       
  8.     private String message;  
  9.   
  10.   
  11.     
  12.     public String getMessage()  
  13.     {  
  14.         return message;  
  15.     }  
  16.   
  17.   
  18.     
  19.     public void setMessage(String message)  
  20.     {  
  21.         this.message = message;  
  22.     }  
  23.   
  24.   
  25.     public String execute() throws Exception  
  26.     {  
  27.         setMessage(MESSAGE);  
  28.         return SUCCESS;  
  29.     }  
  30. }  

7、写jsp页面

新建一个jsp页面来呈现信息。

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  3.   
  4. <%@ taglib prefix="s" uri="/struts-tags" %>  
  5.   
  6. <html>  
  7.   <head>      
  8.     <title>Hello World!</title>      
  9.   </head>  
  10.     
  11.   <body>  
  12.     <h2><s:property value="message" /></h2>  
  13.   </body>  
  14. </html>  

8、部署运行


在Tomcat中运行该项目,然后打开浏览器,在地址栏中输入:http://localhost:8080/Struts2Demo/HelloWorld
IE效果如下。

至此,最简单的Struts2的使用方法介绍完毕。