什么是Struts2
Struts2是Struts1的下一代产品,是在 struts1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
总的来说:
Struts2框架是用来替代servlet和jsp。它的功能就是处理访问服务器的请求。
Struts2的优点
(1)接收参数(自动封装参数)
(2)参数的校验
(3)可以控制页面跳转
(4)可以防止表单的数据重复提交
(5)显示等待页面
struts2环境搭建
1.1导包
官方下载Struts2
Struts2开发商并没有将这个jar进行分类,所以到爆困难,所以进入到app文件下,这个文件是一些war包,这些war包都是demo。将war包当中的包全部复制出来就是我们所要的包。将Struts2_blank.war改.rar文件然后解压,然后将WEB_INFO下面的lib包全部导入导入到项目中。就完成了导包
1.2创建Action类
public class HelloAction {
public String hello(){
System.out.println("hello struts2");
return "success";
}
}
1.3创建配置文件struts.xml
文件位置必须放在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>
引入struts标签
1.4配置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>
1.5创建hello.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>第一个Struts2</title>
</head>
<body>
hello Struts2
</body>
</html>
1.6在web.xml中配置过滤器,这是因为struts基于过滤器
配置过滤器的类名比较长,这时我们可以打开编译器的全局搜索,输入strutsP就可以复制这个类的相对路径
<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>
1.7测试
在浏览器中输入:
http://localhost:8080/hello/helloAction
页面显示为hello.html内容,控制台打印hello struts内容就说明你的struts2框架搭建成功
1.8 错误总结
第一次搭建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.