Struts2
版本
- 登录struts的官网,然后我们就能看到如下的内容。选择相应的安装包进行下载
Struts2应用开发步骤
在web.xml文件中定义核心Filter来拦截用户请求
在web.xmlwen中配置如下片段
<!--定义struts2的核心Filter--> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> <filter> <!--让struts2的核心Filter拦截所有的请求--> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
如果需要以POST方式提交请求,则定义包含表单数据的JSP页面。如果仅仅只是以GET方式发送请求,则无需经过这一步
定义处理用户请求的Action类。
配置Action。
<!-- 配置首页访问的Action -->
<action name="index" class="com.tgb.dmtOS.fontpage.action.IndexAction">
...
</action>
- 配置处理结果合物理视图资源之间的对应关系。
<action name="index" class="com.tgb.dmtOS.fontpage.action.IndexAction">
<result name="index">/WEB-INF/fontPage/index.jsp</result>
<result name="studentStyle">/WEB-INF/studentStyle/studentStyle.jsp</result>
</action>
- 编写视图资源,如果Action需要把一些数据传给视图资源,则可以借助OGNL表达式
Struts2的常规配置
struts2提供了Convention插件来管理Action、结果映射,但是对于大部分实际开发来说,通常还是会考虑使用XML文件来管理struts2的配置信息。
struts.xml 配置文件应该放在web应用的类加载路径下,通常是WEB-INF/class路径下。作用就是配置Action请求之间的对应关系,并配置逻辑视图名和物理视图资源之间的对应关系。除此之外还配置Bean、配置常量、导入其他配置文件等。
Struts2内建的拦截器
struts2内建了大量的拦截器这些拦截器以name-class对的形式配置在struts-default.xml文件中,其中name是拦截器的名字,就是以后使用该拦截器的唯一标识;class则指定了该拦截器的实现类,如果程序定义package继承了Struts2的默认struts-default包,则可以自由使用下面定义的拦截器,否则必须自己定义这些拦截器:
内建拦截器的配置
-
<interceptor name="拦截器名" class="拦截器实现类">
<param name="paramname"> paramValue</param>
</interceptor>
这个语法格式中 name属性用于指定拦截器的实现类。有时,在定义拦截器时需要传入参数,这时需要使用<param>
标签,其中name属性用来指定参数的名称。ParamValue表示参数的值。
配置默认拦截器需要使用<default-interceptor-ref>
元素,此元素为<package>
元素的子元素。其语法格式如下:
<default-interoeptor-ref name="拦截器(栈)的名称">
defaultStack拦截器组合了多个拦截器,这些拦截器的顺序经过精心的设计可以满足大部分程序的需求,只要定义包的过程中继承struts-default包,那么defaultStack拦截器栈就是默认拦截器的引用。
自定义拦截器
- 如果需要开发自己的拦截器类,就需要直接或间接地实现
com.opensymphony.xwork2.interceptor.Interceptor 接口。具体的代码如下:
public interface Interceptor extends Serializable{
void init();//该方法在拦截器被创建后会立即被调用,它在拦截器的生命周期内只被调用一次。
void destory();//与init方法相对应,在拦截器实例被销毁之前,将调用该方法来释放与拦截器相关的资源
String intercept(ActionInvocation invocation) throws Exception;//每拦截一个动作请求该方法都会被调用一次。
}
Struts的标签库
对于一个MVC 框架而言,重点是实现两部分:业务逻辑控制器部分和视图页面部分。Struts2作为一个优秀的MVC框架,也把重点放在了这两个部分上。控制器主要有Action来提供支持,而视图则是由大量的标签来提供支持。Struts2框架对整个标签库进行了分类。
Struts2标签的使用
在JSP文件中使用taglib指令导入Struts2标签库 ,具体代码如下:
<%@taglib prefix="s" uri="/struts-tags" %>
struts中有很多标签比如:控制标签<s:if>、<s:elseif>、<s:else>、<s:iterator>
迭代标签
<s:iterator>
数据标签
<s:property>
该标签用于输出指定的值。通常输出的是value属性指定的值。包含标签
<s:include>
用于当前页面中包含另一个页面(或servlet)<s:param>
标签 它有两种用法,第一种是使用value属性指定参数值。
用法如下:<s:param name="color" value="'red'"></s:param>
它的另一种用法是通过标签体来指定参数值。<s:param name="color"> red</s:param>
这两种语法的功能一样,不通电在于使用value实行设置参数时。需要加单引号,而使用标签体设置参数值时不需要
Struts2的表单标签:
<s:form>、<s:submit>、<s:textfield>、<s:textarea>、 <s:password>、<s:radio>、<s:checkbox>、<s:checkboxlist>、<s:select>、<s:optgroup>、<s:file>、<s:hidden>、<s:reset>
总结:
尽管struts2有很多的漏洞被程序员所诟病,我们依旧不能忽略struts的优点。本篇文章通过对struts2的基本知识进行总结和罗列,让笔者自己对于struts2更加的了解。从struts2的下载到使用,读者是否对Struts2有了一定了解呢,最后感谢您的阅读,如有不妥之处还请大神斧正~