【系统环境】Windows 7 Ultimate 64 Bit

【开发环境】JDK1.6.21,Tomcat6.0.35,MyEclipse10

【其他环境】Struts2.3.4.1

【项目描述】Struts2.3.4.1完整示例

目录结构:

使用的jar包

struts.xml 文件内容:

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 <struts>

7     <package name="struts2demo" extends="struts-default">

8         <action name="hello"

9             class="zain.struts2.action.HelloWorldAction">

10             <result name="success">/jsp/success.jsp</result>

11             <result name="failure">/jsp/failure.jsp</result>

12         </action>

13     </package>

14 </struts>
 
上面代码中的 package节点中,name属性名可以随意取,它的功能是可以实现继承,还有namespace属性名是防止重名,比如项目中不同的包下,有同名Action,添加namespace属性值之后,可以通过命名空间名.Action名称来区分;因为Struts支持多个配置文件,所以exntends属性是用来指定此文件继承自默认配置文件。

我们知道,当我们引入Struts支持的时候,所有的Web请求都将交给Struts核心控制器来处理,根据不同的Action来执行不同的响应,这里的Action的name属性,即是当我们调用这个Action时,执行对应的ActionClass。
 

web.xml 文件内容

1 <?xml
version="1.0" encoding="UTF-8"?>

2 <web-app version="3.0"

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_3_0.xsd">

7   <display-name></display-name>   

8  

9   <!-- 定义Struts2.3.4过滤器 -->

10   <filter>

11       <filter-name>struts2</filter-name>

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

13   </filter>

14  

15   <!-- Struts2.3.4过滤器映射 -->

16   <filter-mapping>

17       <filter-name>struts2</filter-name>

18       <url-pattern>/*</url-pattern>

19   </filter-mapping>

20  

21   <welcome-file-list>

22     <welcome-file>index.jsp</welcome-file>

23   </welcome-file-list>

24 </web-app>
 
HelloWorldAction.java 文件内容
1 package zain.struts2.action;

2

3 public class HelloWorldAction
{

4    

5     private String
message;

6    

7     public String
getMessage(){

8         return message;

9     }

10    

11     public String
execute(){

12         message = "Struts2.3.4演示程序。";

13         return "success";

14     }

15

16 }


启动Web服务器并将项目发布完成之后,我们可以执行如下请求来测试是否正确:

http://localhost:8080/Struts234Demo/hello.action (推荐,简洁的不一定是最好的,但一定是最容易理解的)

http://localhost:8080/Struts234Demo/hello!execute.action(如果Action没有重写execute方法,我们也可以通过指定其他方法来处理请求)

http://localhost:8080/Struts234Demo/hello.action?method=execute(如果没有指定请求的方法,那么默认调用execute方法,所以'?method=execute'是可以省略的)

由这里,我们又能发现一个问题:我能否使用.do来进行请求?为什么会出现404?

为什么我在配置web.xml文件时,<url-pattern>里是 /*,却不能使用.do结尾来请求?

这里,我们需要关心一下Struts2的另外一个文件:struts.properties

在其中我们配置:<constant name="struts.action.extension" value="action,do[,x]"/> 注[]为可选内容,可以是一个列表,我们也可以将其配置到struts.xml中

另外,我们可以配置:struts.i18n.encoding=UTF-8 来指定Web应用程序所使用的字符集,处理中文请求的时候多有用到。

Struts 2.3.4.1完整示例的更多相关文章

  1. 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  2. WCF服务开发与调用的完整示例

    WCF服务开发与调用的完整示例 开发工具:VS2008 开发语言:C# 开发内容:简单的权限管理系统 第一步.建立WCF服务库 点击确定,将建立一个WCF 服务库示例程序,自动生成一个包括IServi ...

  3. springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置

    Log4j由三个重要的组件构成: 日志信息的优先级 日志信息的输出目的地 日志信息的输出格式 日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来指定这条日志信息的重要程度 ...

  4. C连接MySQL数据库开发之Linux环境完整示例演示(增、删、改、查)

    一.开发环境 ReadHat6.3 32位.mysql5.6.15.gcc4.4.6 二.编译 gcc -I/usr/include/mysql -L/usr/lib -lmysqlclient ma ...

  5. Spring 3 AOP 概念及完整示例

    AOP概念 AOP(Aspect Oriented Programming),即面向切面编程(也叫面向方面编程,面向方法编程).其主要作用是,在不修改源代码的情况下给某个或者一组操作添加额外的功能.像 ...

  6. springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目

    一个简单的用户登录系统 用户有账号密码,登录ip,登录时间 打开登录页面,输入用户名密码 登录日志,可以记录登陆的时间,登陆的ip 成功登陆了的话,就更新用户的最后登入时间和ip,同时记录一条登录记录 ...

  7. springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试

    包结构 所需要的jar包直接拷贝到lib目录下 然后选定 build path 之后开始写项目代码 配置文件 ApplicationContext.xml <?xml version=" ...

  8. springmvc 项目完整示例03 小结

    利用spring 创建一个web项目 大致原理 利用spring的ioc 原理,例子中也就是体现在了配置文件中 设置了自动扫描注解 配置了数据库信息等 一般一个项目,主要有domain,dao,ser ...

  9. springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用

    百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...

随机推荐

  1. [python 基础] Class 一些基本概念

    class example(object): data1 = '' date2 = "" def __init__(self, para): self._function1() d ...

  2. jquery 中 (function( window, undefined ) {})(window)写法详解(转)

    最常见的闭包 (Closure) 范式大家都很熟悉了: 123 (function() {// ...})(); 很简单,大家都在用.但是,我们需要了解更多.首先,闭包是一个匿名函数 (Anonymo ...

  3. bzoj3293 [Cqoi2011]分金币&&bzoj1045 [HAOI2008]糖果传递

    Description 圆桌上坐着n个人,每人有一定数量的金币,金币总数能被n整除.每个人可以给他左右相邻的人一些金币,最终使得每个人的金币数目相等.你的任务是求出被转手的金币数量的最小值. Inpu ...

  4. Ice_cream’s world III(prime)

    Ice_cream’s world III Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Othe ...

  5. Seek the Name, Seek the Fame(Kmp)

    Seek the Name, Seek the Fame Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 131072/65536K (J ...

  6. optimizer for eclipse--Eclipse优化,让你的Eclipse快来飞!

    官方网站:http://zeroturnaround.com/free/optimizer-for-eclipse/ infoq网址:http://www.infoq.com/cn/news/2015 ...

  7. 移动端WEB开发 代码片段

    WebApp是指基于Web的系统和应用,其作用是向广大的最终用户发布一组复杂的内容和功能(不明白说的是什么).其实Web APP就是一个针对Iphone.Android等智能手机优化后的web站点,它 ...

  8. 前端自动化学习笔记(一)——Yeoman,bower,Grunt的安装

    最近看视频学习了前端自动化的一些知识,确实让我大开眼界.感觉前端越来越神器了.同时跟着视频自己也尝试运用了一些工具去构建前端项目,但是中间遇见了很多坑,磕磕绊绊的才实现了一点功能,所以打算记录一下学习 ...

  9. C# 中的委托和事件详解

    C# 中的委托和事件 文中代码在VS2005下通过,由于VS2003(.Net Framework 1.1)不支持隐式的委托变量,所以如果在一个接受委托类型的位置直接赋予方法名,在VS2003下会报错 ...

  10. Excel 用row()函数 在Excel中自动添加序号,

    1.如图 2.用if条件根据产品名称判断是否有值进而序号自动添加 If(G9="","",Row()-8)