struts2基本配置

Posted kpsmile

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2基本配置相关的知识,希望对你有一定的参考价值。

Struts2概述

  1 struts2框架应用javaee三层结构中web层框架

 

  2 struts2框架在struts1和webwork基础之上发展全新的框架

 

  3 struts2解决问题:

    

  4 struts2版本

    2.3.24

  5 web层常见框架

    (1)struts2

    (2)springMVC

 

Struts2框架入门

  第一步 导入jar包

    (1)在lib中有jar包,不能把这些jar都导入到项目中

    (2)到apps目录里面,找到示例程序,从示例程序复制jar包

  第二步 创建action

public class HelloAction {
    
    public String execute() {
        return "ok";
    }
}

  第三步 配置action类访问路径

    (1)创建struts2核心配置文件

    - 核心配置文件名称和位置是固定的

    - 位置必须在src下面,名称 struts.xml

 

    (2)引入dtd约束

<?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">

    (3)action配置

<struts>

    <package name="hellodemo" extends="struts-default" namespace="/">
    
        <action name="hello" class="com.wm.hello.HelloAction">
            <result name="ok">/hello.jsp</result>
        </action>
    </package>

</struts>

 

  第四步 配置struts2过滤器

    在web.xml文件中配置

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

 

 

Struts2执行过程

Struts2的核心配置文件:struts.xml

 

  1 名称和位置固定的

       src根目录下

  2 在配置文件中主要三个标签 package、action、result,标签里面的属性

 

  标签package

      1 类似于代码包,区别不同的action,要配置action,必须首先写package标签,在package里面才能 配置action

 

      2 package标签属性

      (1)name属性

      - name属性值根功能本身没有关系的,

      - 在一个配置文件中可以写多个package标签,name属性值不能相同的

 

      (2)extends属性

 

      - 属性值固定的,struts-default

      - 写了这个属性之后,在package里面配置的类具有action功能

 

      (3)namespace属性

      - namespace属性值和action标签里面的name属性值构成访问路径

 

  标签action

    1 action标签配置action访问路径

 

    2 action标签属性

      (1)name属性

      - namespace属性值和action标签里面的name属性值构成访问路径

      - 在package标签里面写多个action标签,但是action的name属性值不能相同的

 

      (2)class属性

      - action全路径

 

      (3)method属性

      - 比如在action里面默认执行的方法execute方法,但是在action里面写其他的方法

      - 让action里面多个方法执行,使用method进行配置

 

  标签result

    1 根据action的方法返回值,配置到不同的路径里面

 

    2 result标签属性

      (1)name属性

      - 和方法返回值一样

 

 

      (2)type属性

      - 配置如何到路径中(转发或者重定向)

      - type属性默认值 做转发操作

 

Struts2常量配置

  1 struts2框架,帮我们实现一部分功能,struts2里面有常量,在常量里面封装一部分功能

 

  2 修改struts2默认常量值

    (1)常用的方式

    - 在struts.xml中进行配置

 

    (2)还有两种方式(了解)

    - 在src下面创建 struts.properties,进行修改

    - 在web.xml进行配置

  3 最常用常量

<constant name="struts.i18n.encoding" value="UTF-8"></constant>

    (1)表单提交数据到action里面,在action可以获取表单提交数据,

    (2)表单提交数据有中文,有乱码问题,解决:

    - post提交直接设置编码

    - get提交做编码转换

    (3)如果在action获取表单通过post方式提交中文,中文乱码问题帮解决了,不需要自己处理问题

 

分模块开发

  1 单独写配置文件,把配置文件引入到核心配置文件中

    <include file="com/wm/hello/hello.xml"></include>

 

 

Action编写方式

  1 action编写有三种方式

    第一种 创建普通类,这个不继承任何类,不实现任何接口

public class HelloAction {

}

    第二种 创建类,实现接口 Action : 必须重写execute方法

public class HelloAction implements Action{
    
    public String execute() {
        return "ok";
    }
}

    另外可以使用Action中的变量SUCCESS,NONE,ERROR来表示返回成功,无返回,失败

 

  第三种 创建类,继承类 ActionSupport(一般使用)

public class HelloAction extends ActionSupport{
    
    public String execute() {
        return "ok";
    }
}

 

访问action的方法(重点)

  1 有三种方式实现

    第一种 使用action标签的method属性,在这个属性里面写执行的action的方法

 

    第二种 使用通配符方式实现

 

    第三种 动态访问实现(不用)

  2 演示错误

  (1)如果action方法有返回值,在配置文件中没有配置,出现错误

  (2)在action里面的方法有返回值,如果有返回值时候类型必须是String

  (3)action里面的方法可以没有返回值,没有返回值时候,在result标签不需要配置

  - 把方法写成void

  - 让返回值,返回 ”none”

    public String execute() {
        return NONE;
    }

 

使用action标签method属性

  1 创建action,创建多个方法

    public String add() {
        System.out.println("add......");
        return NONE;
    }
    
    public String update() {
        System.out.println("update......");
        return NONE;
    }

  2 使用method配置

        <action name="add" class="com.wm.hello.HelloAction" method="add"></action>
        <action name="update" class="com.wm.hello.HelloAction" method="update"></action>

    缺陷:action每个方法都需要配置,如果action里面有多个方法,配置很多的action

 

使用通配符实现(重点)

  1 在action标签里面name属性,name属性值里面写 符号 *  星号

    (1)* 理解: 表示匹配任意内容

    - 比如访问hello,* 可以匹配到

    - 比如访问add,* 可以匹配到

        <!-- 
            name属性值里面写符号 * 
            (1)执行action里面的add方法,访问 book_add,使用book_*可以匹配到,*相当于变成 add
            
            (2)执行action里面的update方法,访问book_update,使用book_*可以匹配到,*相当于变成 update
            上面两个路径使用 book_* 可以匹配到
            method属性写*值
         -->
        <action name="book_*" class="cn.itcast.method.BookAction" method="{1}">

 

以上是关于struts2基本配置的主要内容,如果未能解决你的问题,请参考以下文章

struts2的配置

Struts2基本使用--配置文件简述

struts2的文件配置以及注释代码

漏洞通告Struts2远程代码执行漏洞通告(S2-057)

Struts2学习第一天——struts2基本流程与配置

struts2基本配置详解