1. 导包
官网下载
https://struts.apache.org
官网提供了我们不同的版本 ,高版本虽好,但是由于很多东西更新 使用不方便 所以我就没使用了。
如果想使用 可以上官网查看一下 由于我学习时候使用的是2.3.34版本,所以在这里就给大家讲解一下这个了
解压之后 打开这个文件夹
进入到文件夹的这个界面
在打开lib文件夹
打开以后 可以看到 里面有很多 jar包 我们需要从中找到我们需要的13个jar包就可以了
2. 创建action 类
public class HelloAction {
public String hello(){
System.out.println("hello struts2");
return "success";
}
}
3. 创建配置文件 Struts.xml
(1)文件位置 必须在src,目录下 名字也必须是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>
然后再引入struts 标签
(2)去配置action
<package name="hello" namespace="/hello" extends="struts-default">
<action name="helloAction" class="cn.hd.hello.HelloAction" method="hello" >
<result name="success">/hello.html</result>
</action>
</package>
(3)创建一个hello.html
在web.html 中去配置过滤器。这是因为struts2是基于过滤器
配置过滤器的类名比较长,打开编译器的全局搜索,输入strutsP就可以了,复制这个类的相对路径。(StrutsPrepareAndExecuteFilter)
<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>
(4)测试
就是在浏览器中输入
下面是可能出现的错误和原因
页面上显示内容为hello.html 中的内容,控制台打印 hello struts2 内容
总结:404 错误
1. struts.xml 文件位置放错了
2. struts.xml 文件名字写错了
3. hello.xml 文件位置放错了
4. tomcat 启动失败---
5. struts.xml中配置写错了
一个package 中的namespace 和地址中不一致
action中的name 和地址中的helloAction不一致
result里面name字段 和 action中的返回值不一致
result 中的值不是/hello.html 写错了
配置文件详解
1. struts.xml
namespace对应的地址
2. packaeg 配置详解
package: 它和项目里的包没关系,它是用来管理action的
name: 给这个package起个名字 (根据业务逻辑起名) 没什么意思 可以随便命名,一般情况下
按照当前package管理action的分类来命名
package 和 package 的名字不能重复
namespace: 访问路径地址前缀 跟name 没有关系 跟其他的
package中的namespace能不能重复,没有要求
extends: 继承自struts-default 必须写 名字不能更改
从struts2 核心包中 struts-2.2-core 下面的
struts-default.xml 这里面配置了很多默认的属性
abstract: 抽象 声明的一个标志,当前这个配置文件不能够
独立运行,等待被继承。
<package name="hello" namespace="/hello" extends="struts-default">
</package>
3. action 配置详解
<!--
result
name: 对应的是action类中的method的返回值
名字可以随便写只要和action类中的返回值
结果一样就可以一般情况下使用特定的
type: dispatcher: 转发
redirect: 重定向
标签中间的值: 跳转页面的地址
-->
<action name="helloAction" class="cn.hd.hello.HelloAction" method="hello" >
<result name="success" type="">/hello.html</result>
</action>
2. 常量配置
默认的常量配置 在struts的核心包下的
默认常量配置的文件名是default.properties
如何修改这些常量:
(1)在struts.xml中去修改
(2)在src目录下创建struts.properties文件 直接在该文件中去修改常量即可
(3)在web.xml 文件中去修改 添加一个context-param。在param-name中书写常量名,在param-value中书写常量值去配置
三个地方同时修改那个生效?
web.xml > struts.properties > struts.xml
推荐使用第一个!