您的位置:首页 > 编程语言 > Java开发

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息