struts2的配置

Posted java学习过程

tags:

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

查看Struts2的源代码:

过滤器(filter)是在服务器启动时就创建,创建过滤器时执行init ( ) 方法,在init方法中加载配置文件(自己创建的配置文件和Struts2自带的配置文件),struts.xmlweb.xml。


struts2的配置

1.名称和位置固定

2.配置文件中三个重要的标签:

package、actionresult和里面的属性。

Package标签:类似于代码的包,主要用于区分不同的action。要配置action,必须要写package标签,在package里面才能写action

Package标签属性:

(1) name:name属性与功能没有关系,一个<struts></struts>中可以包含多个package,但是package中的name属性值不能相同。

(2) extends: extends="struts-default"(表示写了这个属性,在package里面配置的类有了action的功能。)

(3) namespace:namespace的属性值和action标签里面的name属性值构成访问路径,namespace可以省略。Egnamespace="/"

<package name="p2" extends="struts-default" namespace="/">

<action name="hello" class="com.limuzi.struts2.HelloAction" method="execute">

浏览器访问路径:/hello

struts2的配置

action:

(1) action标签配置action路径

(2) action的属性

Name:

name属性:

namespace属性值和action标签里面的name属性值构成访问路径。Package里面写多个action标签,但是actionname的属性值不能相同。

class属性:action的全路径。

method属性:比如在action里面默认执行的execute方法,但是action里面想要执行别的方法就需要method进行配置。

struts2的配置

result:根据action方法的返回值配置到不同的路径里面。

Result标签属性:

name属性:与方法返回值相同。<result name="ok">/index.jsp</result>

type属性:配置如何到路径中去。Type属性默认进行转发。

struts2的配置

3.修改Struts2默认的常量

在Struts.xml中配置,name="struts.i18n.encoding" value="utf-8"></constant>

最常用的常量:

表单提交数据到action,在action里面获取表单数据。

表单提交数据的乱码问题,post提交直接设置编码,get提交做编码转换;如果在action获取表单通过post提交中文,可以解决乱码问题。

struts2的配置

4.分模块开发

单独写配置文件,将配置文件引入到核心的配置文件中。<include file="被引入的文件路径"></include>

struts2的配置

5.action的编写方式

(1) 创建普通类,这个类不继承任何类,不实现任何接口。

public class HelloAction

(2) 创建类实现接口action。

import com.opensymphony.xwork2.Action;

public class UserAction implements Action{

@Override

public String execute() throws Exception {

return SUCCESS;

}

}

(3) 创建类,继承ActionSupport类。

public class AnimalAction extends ActionSupport{

@Override

public String execute() throws Exception {

return super.execute();

}

}

struts2的配置

6.访问action的方法:

(1) 使用action标签的method属性,属性里面写执行action的方法。

(2) 使用通配符方式。

(3) 动态访问来实现。

注:如果action中有返回值,在配置文件中没有配置,会出现404错误;在action的方法里面有返回值,如果有返回值,返回值类型必须是Stringaction的方法中可以没有返回值,没有返回值的时候,在result标签中不需要配置,把方法写成void,让返回值返回none

public String execute()  {

return NONE;

}

struts2的配置

7.使用action标签的method属性进行:

(1) 创建action,再在action中创建多个方法

Eg:使用method进行配置

package com.limuzi.struts2;

import com.opensymphony.xwork2.ActionSupport;

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

<?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="methoddemo" extends="struts-default" namespace="/">

<action name="addAction" class="com.limuzi.struts2.BookAction" method="add"></action>

<action name="updateAction" class="com.limuzi.struts2.BookAction" method="update"></action>

</package>

</struts>

Web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>struts2exerise</display-name>

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

</web-app>

浏览器访问http://localhost:8080/struts2exerise/updateAction,控制台输出update……

struts2的配置

8.使用通配符实现

(1)action标签里面的name属性,name的值中加了*号(匹配任意内容)。

Eg:

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

9.结果页面的配置

(1)result的标签配置action的返回值到不同的路径中去。

如果多个action,方法里面的返回值相同,到的页面也是相同的,这时候可以使用全局页面配置。

普通配置:

<struts>

<package name="demo1" extends="struts-default" namespace="/">

<action name="book" class="com.limuzi.action.BookAction">

<result name="success">/index.jsp</result>

</action>

<action name="order" class="com.limuzi.action.OrderAction">

<result name="success">/index.jsp</result>

</action>

</package>

</struts>

全局配置:

<global-results>

<result name="success">/index.jsp</result>

</global-results>

(2)既配置了全局页面又配置了局部页面,最终以局部为主。

(3)result标签的type属性

Result标签中除了name属性还包括了type属性,type表示的是以何种方式到路径中去。

Type的属性值:

Eg:<result name="success" type="dispatcher">/jsp名/result>

Eg:<result name="success" type="redirect">/jsp名/result>

配置到其他action

(3)chain:转发到action

Eg:<result name="success" type="chain">action的访问名称(也就是浏览器输的)/result>

(4)redirectAction:重定向到action

Eg:<result name="success" type="redirectAction">action的访问名称(也就是浏览器输的)/result>





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

struts2 之 struts2简介,struts2开发步骤,struts2详细配置,struts2执行流程

struts2-环境搭建-访问流程-配置详解-常量配置-类详解

Struts2 第四讲 -- Struts2的基本配置

Struts2项目搭建之struts.xml配置

struts2之day01——04Struts2相关配置

struts2基本配置