struts配置信息
1.packsge
name 随便写 只要不重复就行 可以进行模块化区分
namespace 命名空间 随便起
extends 继承一个包 struts-default
2.action
name 这个类的访问路径
class 类的全限定类名
method 类方法 被访问的方法
3.result
name 方法的返回值(匹配)
type 请求跳转的方法 默认是dispatcher
值部分:跳转网站资源
3.1 global-results
全局变量
例如:
<global-results>
<result name="main">/main.jsp</result>
</global-results>
只要是返回值为main的方法都会跳转到main.jsp页面
4.引入其他的struts配置文件
<include file="路径"></include>
1.代码演示
1.使用structs需要配置文件web.xml
<!-- 配置struts的核心过滤器 -->
<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>
//位置:display-name后面
//作用:
//StrutsPrepareAndExecuteFilter名字已经很能说明问题了,
//prepare与execute,前者表示准备,
//可以说是指filter中的init方法,即配制的导入;
//后者表示进行过滤,指doFilter方法,
//即将request请求,转发给对应的 action去处理。
***报错处理
//如果程序报类找不到异常,且后面有org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 等信息,
//可能是你的版本问题.解决方法是确定你的struts版本,
//如果是2.1.3之前的版本,用 org.apache.struts2.dispatcher.FilterDispatcher,
//以后的版本则配置
2.在src下创建一个struts.xml配置文件
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="he" namespace="/he" extends="struts-default">
<action name="HelloAction" class="com.lanou3g.hello.HelloAction" method="hello">
<result name="success">/hello.jsp</result>
</action>
</package>
<!-- 引入其他的struts配置文件 -->
<!-- <include file=""></include> -->
</struts>
头文件寻找:打开Libraries->Web App Library->
struts2-core-2.3.24.jar->struts-2.3.dtd第30行
3.创建方法类
package com.lanou3g.hello;
public class HelloAction {
public String hello() {
System.out.println("Hello word");
return "success";
}
}
页面结果:
4.修改常量配置 constant
<!-- 去default.properties文件 找到你要修改的配置 struts.i18n.encoding=UTF-8-->
<!-- name: 键值 value:值 -->
<!--
struts.action.extension=action,,
表示访问路径的 后缀 可以是.action 或者无后缀
-->
<!-- 可以给你的配置文件提供 热加载(更改完了不用重启服务器)
struts.devMode = false 默认值(false)
-->
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<constant name="struts.devMode" value="true"></constant>
<package name="de" namespace="/de" extends="struts-default">
<action name="Demo01Action" class="com.lanou3g.def.Demo01Action" method="defaultFun">
<result name="sueecss" type="dispatcher">/hello.jsp</result>
</action>
</package>
</struts>
4.1方法类
package com.lanou3g.def;
public class Demo01Action {
public String defaultFun() {
System.out.println("Demo01Action");
return "sueecss";
}
}
5.常量配置 动态方法(不常用 搜索引擎抓取不好 网址过于复杂)
<!--
struts.enable.DynamicMethodInvocation = false
-->
<!-- 使用 !方法名 -->
<!-- 使用通配符访问路径 *是你的方法名
method 标签 中{1} 代表到前面* 获取的方法名 -->
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<package name="dynamic" namespace="/dynamic" extends="struts-default">
<action name="Demo02Action_*" class="com.lanou3g.dynamic.Demo02Action" method="add">
<result name="success" type="dispatcher">/hello.jsp</result>
</action>
</package>
</struts>
5.1方法类
package com.lanou3g.dynamic;
/*
* 动态方法测试
*/
public class Demo02Action {
public String add() {
System.out.println("增加方法");
return "success";
}
public String add2() {
System.out.println("删除方法");
return "success";
}
public String add1() {
System.out.println("增加方法");
return "success";
}
public String find() {
System.out.println("查找方法");
return "success";
}
}
7.Action类 创建方式一
/*
* Action类 创建方式一
* 随便一个普通类都可以作为一个Action
* 只需要你去配置struts.xml文件
* 相比于servlet 可以减少代码的侵入性
*/
public class Demo03Action {
}
8.实现Action方式二
package com.lanou3g.test;
import com.opensymphony.xwork2.Action;
/*
* 实现Action方式二
* 实现Action接口
* 意义在于可以提醒Action类中的方法怎么写
*/
public class Demo04 implements Action{
@Override
public String execute() throws Exception {
return null;
}
}
9.常用创建 Action类 方式
package com.lanou3g.test;
import com.opensymphony.xwork2.ActionSupport;
/*
* 常用创建 Action类 方式
* 因为该类实现了 很多接口 一个接口就有一个功能
*/
public class Demo05Action extends ActionSupport{
}
10.Action 标签的默认值
public class Demo06Action {
public String execute() {
System.out.println("测试 action ");
return "success";
}
}
10.1struts配置
<?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.enable.DynamicMethodInvocation = false
-->
<!-- 使用 !方法名 -->
<!-- 使用通配符访问路径 *是你的方法名
method 标签 中{1} 代表到前面* 获取的方法名 -->
<struts>
<!-- 默认使用的类 ActionSupport
如果你找不到这个类 就去struts-default文件下 找到默认的类
默认的执行方法execute();
mor接受返回值 "success"
默认的跳转方式 请求转发
-->
<package name="test" namespace="/test" extends="struts-default">
<action name="Demo06Action" class="com.lanou3g.test.Demo06Action" method="execute">
<result name="success">/hello.jsp</result>
</action>
</package>
</struts>
注意:模块化需要引入其他的struts配置文件
如: