Struts2获取演示示例教程
回想Struts2的使用过程,网上搜的教程多多少少都会有点问题。又一次记录下创建过程,方便查阅。
1、下载Struts2的jar包
下载地址:http://archive.apache.org/dist/struts/binaries/
我用的是struts-2.3.14-all.zip这个版本号
2、创建一个web project项目
以下给出全部文件均创建完毕后的project师图。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3d3Z2V5YW5nNzc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
3、导入Struts2所需jar包
由于仅仅是演示样例程序,仅仅须要导入Struts 2支持最小的包就能够了,网上非常多教程中加入的最小包都有出入。教大家一个保险的方法。
解压刚才下载的压缩包struts-2.3.14-all.zip,在apps文件夹下有个struts2-blank.war包,打开它,到WEB-INF/lib文件夹下,例如以下图所看到的,即为所需的最小包。包括的包应该和详细的Struts版本号有关。
4、配置web.xml
以下进入到详细的配置编码阶段。
打开web.xml,改动配置參数。改动后的详细配置例如以下。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name> <!-- 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>
这里须要注意的是
这里面填入的类。
<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
结果报错
***********************************************************************
* WARNING!!! *
* *
* >>> FilterDispatcher <<< is deprecated! Please use the new filters! *
* *
* This can be a source of unpredictable problems! *
* *
* Please refer to the docs for more details! *
* http://struts.apache.org/2.x/docs/webxml.html *
* *
***********************************************************************
假设你也遇到如上的错误,要细致再检查下了。
5、配置struts.xml
以下须要创建struts.xml文件,配置strust2要调用的action。直接新建在src文件夹下,那样部署的时候会自己主动公布到WEB-INF/classes文件夹下,或者直接创建在WEB-INF/classes文件夹以下。
<?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>
<package name="struts2" extends="struts-default">
<action name="HelloWorld" class="tutorial.HelloWorld">
<result>/HelloWorld.jsp</result>
</action>
</package>
</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依据返回的字符跳到对应的页面
package tutorial;
import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extends ActionSupport
{
public final static String MESSAGE = "Struts2 is up and running ...";
private String message; /**
* @return the message
*/
public String getMessage()
{
return message;
} /**
* @param message the message to set
*/
public void setMessage(String message)
{
this.message = message;
} public String execute() throws Exception
{
setMessage(MESSAGE);
return SUCCESS;
}
}
7、写jsp页面
新建一个jsp页面来呈现信息。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%@ taglib prefix="s" uri="/struts-tags" %> <html>
<head>
<title>Hello World!</title>
</head> <body>
<h2><s:property value="message" /></h2>
</body>
</html>
8、部署执行
在Tomcat中执行该项目,然后打开浏览器,在地址栏中输入:http://localhost:8080/Struts2Demo/HelloWorld
IE效果例如以下。
到目前为止,最简单的Struts2使用完整的介绍。
Struts2获取演示示例教程的更多相关文章
- 实现BPEL4WS演示:教程
http://www.ibm.com/developerworks/cn/education/webservices/ws-bpelws/bpel_tutorial_cn.html 开始 什么是Bus ...
- jmeter-01 JMeter HTTP测试的各元件功能演示示例
最小的测试将包括测试计划,线程组和一个或多个采样器. Jmeter HTTP测试的各元件演示示例 功能逻辑:wap官网(a.4399sy.com.hk),每个用户登录一次,发帖2次,发帖成功后注销退出 ...
- ASP.NET MVC 基于角色的权限控制系统的示例教程
上一次在 .NET MVC 用户权限管理示例教程中讲解了ASP.NET MVC 通过AuthorizeAttribute类的OnAuthorization方法讲解了粗粒度控制权限的方法,接下来讲解基于 ...
- Struts2 @ResultPath注释示例
在Struts 2中, @ResultPath 注解用于控制Struts2找到存储的结果或JSP页面.默认情况下,它会找到结果页在 “WEB-INF/content/” 文件夹. 不知道为什么在Str ...
- 新鲜出炉的30个精美的 jQuery & CSS3 效果【附演示和教程】
新鲜出炉的30个精美的 jQuery & CSS3 效果[附演示和教程] 作为最流行的 JavaScript 开发框架,jQuery 在现在的 Web 开发项目中扮演着重要角色,它简化了 ...
- Selenium2学习-002-Selenium2 Web 元素定位及 XPath 编写演示示例
此文主要对 Selenium2 的 Web 元素定位及 XPath 编写示例,敬请各位亲们参阅,共同探讨.若有不足之处,敬请各位大神指正,不胜感激! 通过 Firefox(火狐)浏览器的插件 Fire ...
- Struts2获取request三种方法
Struts2获取request三种方法 struts2里面有三种方法可以获取request,最好使用ServletRequestAware接口通过IOC机制注入Request对象. 在Actio ...
- struts2获取request、session、application
struts2获取request.session.application public class LoginAction extends ActionSupport implements Reque ...
- nginx subrequest演示示例程序
只有简单subrequest应用演示示例. nginx.conf文件: #user nobody; worker_processes 1; #error_log logs/error.log; #er ...
随机推荐
- SICP练习1.6-1.8
1.6 死循环 1.7 #lang racket (define (square x) (* x x)) (define (sqrt-iter guess x) (if (good-enough? g ...
- jQuery Mobile 入门基础教程
jQuery Mobile是jQuery在手机上和平板设备上的版本.jQuery Mobile 不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架. jQue ...
- CentOS6.5 搭建基础PHP环境(yum安装)
转载:闲来无事 » CentOS6.5 搭建基础PHP环境(yum安装) yum安装php环境只需要几条简单的命令就可以实现,OK,各位客官,菜来了.首先确保你的yum源可用,或者网络是通的,不然下载 ...
- 仿OpenStack开发云计算管理软件
仿OpenStack开发云计算管理软件 使用Python语言开发一套类似OpenStack的云计算管理平台LouCloud,具备基本的用户,服务器,镜像与 虚拟机管理功能,学习IaaS,虚拟化,Lib ...
- 基于visual Studio2013解决算法导论之011快排改良
题目 快排改良 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #in ...
- cmake手册详解----转
参考链接:http://www.cnblogs.com/coderfenghc/tag/cmake/
- 基于Qt的FreeType字体轮廓解析
一.本文目的 以前的文档中.详细的介绍了FreeType开源字体引擎库的基础知识.基本用法.但并未详细的阐明在TurboCG中.是如何解析出一个文字的轮廓的,本文集中阐述.怎么样使用FreeType开 ...
- Light OJ 1318 Strange Game 组合数+高速幂+分解因子
长度为l的用k种字符组成的字符串有k^l中 当中m个字符要不同样 那就是k^l*C(l, m)*(k-1)^m 有反复 要除以2 可是你mod n了 不能直接除 n不一定是素数 所以不能乘以逆元 所以 ...
- C++内存管理(超长)
[导语] 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不 ...
- C++多继承的好处是增加了弹性和灵活性,Delphi类强迫单继承TObject是为了提供许多强大功能
要说灵活性,是C++更强.我自己开发已经好几次碰到需要多继承的情况了. 但是Delphi强迫继承TObject,虽然是单继承,但是提供了相当多的强力功能.要说强大,那还是Delphi当仁不让. 摘自& ...