Struts2框架自学之路——轻松入门
2017-05-16 16:29
169 查看
目录
目录简介
Struts2中的Action
Action类的配置
webxml中Struts2的过滤器
Struts2的核心配置文件
标签package
标签package的属性
标签action
标签action的属性
标签result
标签result的属性
分模块开发
Struts2常量配置
修改Struts2默认常量值
常用常量
Action的编写方式
修改访问Action时执行的方法
简介
Struts2框架应用于JavaEE三层结构中Web层的框架;Struts2框架在Structs1和WebWork基础之上发展的全新的框架;
Web层常见框架:(1)struts2;(2)Spring MVC。
Struts2中的Action
Action类的配置
配置action类访问路径的步骤如下:(1)创建struts2核心配置文件
- 核心配置文件的名称和位置是固定的,位置必须在src下面,名称为struts.xml
(2)为struts.xml引入dtd约束
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
(3)在struts.xml中进行action配置
<struts> <package name="hellodemo" extends="struts-default" namespace="/"> <!--name: 访问名称--> <action name="hello" class="com.wm103.action.HelloAction"> <!--配置方法返回值跳转到的页面--> <result name="ok">/hello.jsp</result> </action> </package> </struts>
(4)在web.xml中配置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>
(5)访问地址:
http://localhost:8080/Web应用的名称/hello.action或者
http://localhost:8080/Web应用的名称/hello
web.xml中Struts2的过滤器
在web.xml中配置的Struts2过滤器在服务器启动时候创建,创建过滤器时执行init方法。在init方法中主要加载配置文件,包含自己创建的配置文件和Struts2自带的配置文件。注:过滤器在我们启动服务器时创建,而Servlet默认在第一次访问时创建。
Struts2的核心配置文件
Struts2的核心配置文件固定放置在Web应用src目录下,名称为struts.xml。在配置文件中主要有3个标签以及其属性,分别为 package、action、result标签。标签package
类似于代码中的包,用于区分不同的action。要配置action,必须首先写package标签,在package标签内才能配置action标签。标签package的属性
(1)name属性name属性值跟功能本身并没有什么关系。同时,在一个配置文件中,我们可以写多个package标签,但是package标签的属性name值不能相同。
(2)extends属性
extends属性的属性值是固定的,如:extends=”struts-default”。
配置了extends属性后,在package里面配置的类就具有了action的功能。
(3)namespace属性
namespace属性的默认值为“/”。namespace属性值同action标签中的name属性值构成访问路径。如:
<package name="hellodemo" extends="struts-default" namespace="/web"> <!--name: 访问名称--> <action name="hello" class="com.wm103.action.HelloAction"> <!--配置方法返回值跳转到的页面--> <result name="ok">/hello.jsp</result> </action> </package>
则访问:
http://localhost:8080/Web应用名称/web/hello。
标签action
action标签配置action的访问路径。标签action的属性
(1)name属性namespace属性的默认值为“/”。namespace属性值同action标签中的name属性值构成访问路径。
在package标签里面可以写多个action标签,但是action的name属性值不能相同。
(2)class属性
配置action的全路径。
(3)method属性
在action里面默认执行execute方法,可以通过method属性配置其他方法执行。
标签result
根据action的方法(默认为execute方法)的返回值,配置到不同的路径里面。标签result的属性
(1)name属性和方法返回值一样,如:
<!--配置方法返回值跳转到的页面--> <result name="ok">/hello.jsp</result>
(2)type属性
配置如何到路径中去(转发或重定向),type属性默认值是转发的操作。详情请看:result标签的type属性。
分模块开发
单独写配置文件,并把配置文件引入到核心配置文件struts.xml,如:<!-- 引入hello.xml文件 --> <include file="com/wm103/action/hello.xml"></include>
如果直接在src目录下,则
<include file="hello.xml"></include>
Struts2常量配置
Struts2默认的常量存放位置在项目struts2 jar包中的org.apache.struts2下的
default.properties中。
修改Struts2默认常量值
(1)常用的方式- 在struts.xml中进行配置,如:
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
(2)在src下面创建
struts.properties,进行修改。
(3)在web.xml中通过
<init-param>元素配置常量。
常用常量
struts.i18n.encoding=UTF-8
(1)表单提交数据到action中,在action中可以获取表单提交的数据。
(2)表单提交的数据中有中文,乱码问题的解决:
- post提交,直接设置编码;
- get提交,做编码转换。
参考:
http://blog.csdn.net/qq_15096707/article/details/70953444#request接收中文数据乱码问题
(3)如果在action获取表单通过post方式提交的中文数据,那么中文乱码问题就已经被解决,不需要我们自己处理。
Action的编写方式
Action的编写有3中方式:1. 创建简单类,不实现任何接口,也不继承任何类;
public class HelloAction { public String execute() { return "ok"; } }
2. 创建一个实现Action接口的类;
import com.opensymphony.xwork2.Action; /** * Created by DreamBoy on 2017/5/16. * 实现接口 */ public class UserAction implements Action { @Override public String execute() throws Exception { //return "success"; return SUCCESS; } }
3. 创建一个继承ActionSupport类的类。(最常用的方式)
import com.opensymphony.xwork2.ActionSupport; /** * Created by DreamBoy on 2017/5/16. * 继承类 */ public class PersonAction extends ActionSupport { @Override public String execute() throws Exception { return SUCCESS; } }
修改访问Action时执行的方法
有3种实现的方式:1. 修改struts.xml配置文件中action标签的method属性,该属性的值设置为访问Action时执行的方法名。
2. 使用通配符实现(重点)
设置action标签name属性的值包含符号“
*”。
*表示匹配任意内容。如:
struts.xml中配置:
<package name="demo" extends="struts-default" namespace="/"> <action name="book_*" class="com.wm103.action.BookActon" method="{1}"></action> </package>
这样配置后,表示访问URL路径 /book_add 时,将会调用BookAction中的add方法执行;访问URL路径 /book_update 时,则会调用BookAction中update方法执行,以此类推。因为
*号表示匹配任意字符。其中
{1}则表示第一个匹配到
*号的内容,如
book_add则匹配
book_*,那么
{1}的值为add。
注:
book_并不匹配
book_*。
3. 动态访问实现(一般不使用)
注:1. 访问Action时执行的方法(默认为execute方法),有返回值,那么返回值类型必须为String类型。2. 该方法也可以没有返回值,在没有返回值的时候,在struts.xml中result标签不需要配置。并将方法的返回值设置为void或者让返回值,返回“none”字符串(一般我们返回“none”)。
import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport { public String execute() { return NONE; } }
相关文章推荐
- XML轻松学习手册(1)XML快速入门
- 统一建模语言UML轻松入门(4)――动态建模
- XSLT轻松入门
- 当你觉得学习一个技能的时候很轻松就说明你入门了
- XSLT轻松入门提纲
- 【SpringData】轻松愉快之玩转SpringData( 第3章 Spring Data快速入门 )
- C++ STL编程轻松入门0
- PBDOM操作XML文档轻松入门
- 轻松学习Linux之入门篇
- 轻松入门React和Webpack
- 正则表达式之轻松入门
- Java 8函数编程轻松入门(三)默认方法详解(default function)
- Android NDK开发轻松入门
- Python轻松入门-18 参数解包
- 苹果WatchKit轻松入门
- DOM解析轻松入门(四)--DOM Level 3 Load and Save
- 1:统一建模语言UML轻松入门---基本概念
- XSLT轻松入门第一章:XSLT的概念
- Groovy轻松入门——搭建Groovy开发环境
- 统一建模语言UML轻松入门之基本概念