Struts2 入门
1、什么是Struts2
Struts2是轻量级的MVC框架,主要解决了请求分发的问题,重在控制层和表现层
低侵入性,与业务代码的耦合度很低。即业务代码中基本不需要import它的包。
MVC框架Struts2实现了MVC,并提供一系列的API,采用模式化方式简化业务开发过程。
2、为什么用Struts2
Struts2与Servlet对比
优点
1、业务代码解耦,适合团队开发
将请求分发给不同的处理类,从而降低了业务代码的耦合度。
2、提升开发效率
提供了一系列API,可以大大提升项目的开发效率。如:使用
拦截器自动给请求参数转型。
缺点
1、执行效率偏低
需要使用反射、解析XML等技术手段,会降低执行效率。
2、结构复杂,有学习成本
需要花一定成本学习Struts2的API及使用步骤。
Struts2自身的优势
健壮性
Struts2是一个成熟稳定的框架,目前最稳定的版本是2.1.8
易用性
Struts2易学好用,几天即可上手
扩展性
Struts2运用AOP思想,使用拦截器来控制业务控制器Action
侵入性
Struts2对业务代码依赖性很低,基本不需要import它的包
3、Struts2 - 使用步骤
1、创建WEB项目
2、导入Struts2核心包
导入Struts2最小范围核心包(5个),将这些包复制到新建项目的/WEB-INF/lib目录下。
3、配置前端控制器
<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、创建Struts.xml
在src下,创建名为struts.xml的配置文件。
Struts2配置文件默认要放在src下。
Struts2配置文件默认名称为struts.xml。
struts.xml的格式
可以参考DTD文件,位于核心包根路径下。
可以参考默认配置文件struts-default.xml
也位于核心包根路径下。
配置struts.xml的版本信息及DTD引用。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
5、编写业务控制器Action
创建业务控制器组件,通常命名为XxxAction,该组件是一个满足JavaBean
规范的类。
在Action中定义业务方法,要满足下列条件:
方法是public的、返回值为String类型、参数列表为空
编写业务方法
方法内编写业务逻辑代码
返回的字符串与struts.xml(action(result的name属性匹配,即根据
此返回值可以找到对应的result。
6、编写JSP页面
创建JSP页面 ,在页面上写显示部分的代码。
<%@page pageEncoding="utf-8" %>
<html>
<head>
</head>
<body>
<h1>Hello,Struts2.</h1>
</body>
</html>
7、配置Struts.xml
在struts.xml中配置请求与Action的关系,并在action下,通过result设置转发的页面。
<package name="day01" namespace="/demo" extends="struts-default">
<action name="hello" class="action.HelloAction" method="sayHello">
<result name="success">
/hello.jsp
</result>
...
</action
</package>
相关属性说明在案例中
package:包,用于对Action进行封装。
1、name:包名,根元素下可以有多个包,彼此之间不能重名。
2、extends:继承,用于指定继承的包,相当于将继承包下的配置信息复制到了当前包下。
3、namespace:命名空间,用于规定Action的访问路径,必须以“/”开头。
4、请求Action时,按照如下格式拼写URL:
http://IP:PORT/ProjectName/NAMESPACE/ACTIONNAME
action:业务控制器,用于注册业务控制器组件(类)。
1、name:action名称,用于规定Action的访问路径。
一个包下可以有多个action,彼此之间不能重名。
2、class:业务控制器组件,用于指定业务控制器对应的类。
3、method:方法,用于指定访问当前action时要调用的方法。