欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

struts2入门简介一

程序员文章站 2022-06-02 15:07:39
...

Struts2的核心配置文件

struts2入门简介一

1、struts.xml的名称和位置是固定的
2、在配置文件中主要有三个标签 package、action、result、标签里面的属性

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

2、package标签属性

(1)name属性:name属性值跟功能本身没有关系,在一个配置文件中可以写多个package标签,name属性值不能相同。

(2)extends属性:属性值是固定的:struts-default,写了这个属性之后,在package里面配置的类具有action功能。

(3)namespace属性:namespace属性值和action标签里面的name属性值构成访问路径,如果不写默认”/”

struts2入门简介一

构成”/hello”

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属性:和action中方法的返回值一样

(2)type属性:配置如何到路径中(转发或者重定向),默认值做的是转发操作

Struts2的常量配置

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

2、struts默认的常量位置

struts2入门简介一

3、修改struts默认常量值
(1)常用的方式:在struts.xml中进行配置

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

(2)在src下面创建struts.properties,进行修改
(3)在web.xml进行配置

分模块开发
1、单独写配置文件,把配置文件引入到核心配置文件中

例如:新建hello.xml

<?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">
<struts>
    <package name="hellodemo" extends="struts-default" namespace="/">
        <!-- name:访问名称 -->
        <action name="hello" class="com.demo.action.HelloAction">
            <!-- 配置方法的返回值,并转向指定页面 -->
            <result name="ok">/hello.jsp</result>
        </action>
    </package>
</struts>

struts2入门简介一

<include file="com/demo/action/hello.xml"></include>

Action编写方式

1、action编写有三种方式:

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

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

第二种 创建类,实现接口 Action

public class UserAction implements Action{

    @Override
    public String execute() throws Exception {
        // TODO Auto-generated method stub
        return null;
    }

}

第三种 创建类,继承类ActionSupport

public class PersonAction extends ActionSupport{

    @Override
    public String execute() throws Exception {
        // TODO Auto-generated method stub
        return super.execute();
    }
}

访问action的方法
1、有三种方式实现:

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

action中的方法:

public class BookAction extends ActionSupport{

    //添加
    public String add(){
        System.out.println("add....................");
        return NONE;
    }

    //修改
    public String update(){
        System.out.println("update....................");
        return NONE;
    }
}

struts.xml中的配置

<struts>
    <package name="methoddemo" extends="struts-default" namespace="/">
        <!-- 有method属性,写要执行的action里面的方法名称 -->
        <action name="addAction" class="com.demo.method.BookAction" method="add">
        </action>
        <!-- 执行update方法 -->
        <action name="updateAction" class="com.demo.method.BookAction" method="update">
        </action>
    </package>
</struts>

访问:
http://localhost:8080/strutsDemo/addAction.action
http://localhost:8080/strutsDemo/updateAction.action

这样方式适合于action 中方法比较少的情况,action中的每一个方法都需要配置,如果action中方法很多 struts的配置就会显得很臃肿。

第二种 使用通配符方式实现
action中的方法不变

struts.xml中的配置:

<action name="book_*" class="com.demo.method.BookAction" method="{1}"></action>

使用* 匹配任何内容

当访问 http://localhost:8080/strutsDemo/book_add.action

book_* 自动匹配为book_add ,* 此时的值就是add,
method值的写法是固定的,就是*现在的值。

第三种 动态访问实现

2、错误演示:
(1)如果result标签中的name值与action中方法的返回值不一致,或者配置文件中没有配置返回值,会出现如下错误:

struts2入门简介一

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

(3)action里面的方法可以没有返回值,没有返回值就不用配置result标签。有两种方式,一种直接返回字符串”none”,另一种返回类型写成void。

相关标签: struts2.0