Struts2框架自学之路——轻松入门

目录

简介

  1. Struts2框架应用于JavaEE三层结构中Web层的框架;
  2. Struts2框架在Structs1和WebWork基础之上发展的全新的框架;
  3. 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;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值