Struts2总结

简介:


Struts2总结

接触Struts2已经接近一个月,与同样接触没有很长时间的Struts相比,也确实感觉到了很多令人耳目一新的感觉。今天有必要对Struts2的学习做一下总结。以前曾经写过一篇博文《Struts,Struts2WebWork的比较》,对这三种框架进行了综合性地叙述和比较。现在是对Struts2的总结。
Struts2的处理流程如下:
1.用户请求对Web应用执行某个动作后,Web浏览器将要求某些资源的请求发送到Web服务器。
2.服务器小程序过滤器调度程序接到请求后,分析请求,然后确定调用相应的动作,提供资源。
3.在Action被执行之前,经配置后把一些常见功能(如验证、工作流或者文件上传)作用到请求上的一组拦截器上,可自动作用到该请求上。
4Action类的一个新实例被创建,然后执行动作方法,用于把信息存储到数据库,或从数据库获取信息。
5.结果显示输出——无论输出的是HTML、图像、PDF还是其他某种格式。
6.然后,请求按照相反顺序通过拦截器传送。返回的请求允许执行其他的处理或者清理操作。
7.最后,容器把输出发送到浏览器。
 
Struts2Struts相比的的特点
1.struts2所用到的技术就是webwork的技术,它所用到的表达式语言是ognl语言,这是种非常强大的对象导航语言。(ognl-2.6.11.jar
2: struts2中不使用actionform管理表单,在struts2中用的action,整合了strtus中的actionactionform
3.struts2中是通过标签来对表单和实体bean进行管理的,在struts2中提供了一套标签非常灵活。
 
构建Struts2应用的步骤:
1.        将所需Struts2 jar包拷贝到WEB工程的/WEB-INF/lib目录下。
2.        配置web.xml文件,增加Struts2的映射。web.xml文件配置如下:
 
     < filter-mapping >
        < filter-name > characterEncoding </ filter-name >
        < url-pattern > /* </ url-pattern >
     </ filter-mapping >
-    < 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 >
web.xml中定义了一个struts2FilterDispathcer(拦截器:Struts2 技术的核心)的filter FilterDispatcher用来初始化struts2并且处理所有的Web请求。
3.        编写Action类,DAObean类,整合HibernateSpring框架。
Struts.xml中的配置如下:
<? xml  version = "1.0"  encoding = "UTF-8"  ?>
   <!-- 设置编码方式,通常设置为中文编码 -->
<! DOCTYPE  struts  PUBLIC
     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     "http://struts.apache.org/dtds/struts-2.0.dtd" >
 
< struts >
 
     < constant  name = "struts.enable.DynamicMethodInvocation"  value = "false"  />
     < constant  name = "struts.devMode"  value = "false"  />
     < constant  name = "struts.custom.i18n.resources"  value = "globalMessages" />
     <!--  上传文件大小  -->
     < constant  name = "struts.multipart.maxSize"  value = "5242880"  />
      <!— 避免 Team 工作时系统资源的争夺  -->
     < include  file = "struts-example.xml" />
     < include  file = "struts-login.xml" />
 
   ...
 
     < include  file = "struts-personal.xml" />
   
     < package  name = "default"  extends = "struts-default" >
   
       < interceptors >
        < interceptor  class = "com.cumt.web.filter.LoginInterceptor"  name = "loginInterceptor"  />
        < interceptor-stack  name = "CheckLogin" >
              < interceptor-ref  name = "defaultStack"  />
              < interceptor-ref  name = "loginInterceptor"  />
        </ interceptor-stack >
       </ interceptors >
   
  
     <!--  这里放全局的  -->
     < global-results >
        < result  name = "login" > /loginError.jsp </ result >
        < result  name = "error" > /error.jsp </ result >
        < result  name = "index"  type = "redirect" > Index.action </ result >
        < result  name = "addLeader"  type = "redirect" > /public/addLeader.jsp </ result >
        < result  name = "addDepartment"
 
...
 
     </ global-results >
   
      < action  name = "Index"  >
           < result  name = "success" > /main.jsp </ result >
            < interceptor-ref  name = "CheckLogin"  />
      </ action >
   
    </ package >
 
</ struts >
 
Struts-login.xml中的配置如下:
<? xml  version = "1.0"  encoding = "UTF-8"  ?>
<! DOCTYPE  struts  PUBLIC
         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
         "http://struts.apache.org/dtds/struts-2.0.dtd" >
 
< struts >
 
     < package  name = "login"  namespace = ""  extends = "default" >
      
  < action  name = "Login*"  method = "{1}"  class = "LoginAction" >
             < result  name = "input" > /login.jsp </ result >
             < result  type = "redirectAction" > Index </ result >
         </ action >      
 
     </ package >
</ struts >
4.        Struts2的类型转换,输入校验,核心拦截器,国际化,标签库以及对Spring,Hibernate,JSF的整合以后有时间还会做一个总结,大家可以参看这样一本书:
 
最后给大家推荐本书三扬科技编著,电子工业出版社出版:《开发者突击:Struts2核心技术与JavaEE框架整合开发实战》



     本文转自 gaochaojs 51CTO博客,原文链接:http://blog.51cto.com/jncumter/168300,如需转载请自行联系原作者

相关文章
|
7月前
|
安全 Java API
Struts2
访问web资源 1》使用servlet API解耦的方式,获取的方法较少   1.使用ActionContext,一个一个获取,效率不高   2.实现XxxAware接口(ApplicationAware,SessionAware.....)推荐,
25 0
|
设计模式 开发框架 安全
Struts,你为何死不悔改!
上篇文章《诡异的字符串问题。。。》的问题已经解决了,我一直相信「团队力量的重要性」,虽然我不能保证加入群的每一个人都是乐于分享的同学,但我始终群里的各位同学总会慢慢被我们这种乐于分享的群氛围所影响。就以上篇文章为例,群里的 Univechige 同学专门给 IntelliJ IDEA 官方发邮件寻求原因,这便是一个好的开端,我相信有各位同学的共同维护,后面群氛围会越来越好。下面给出 IDEA 官方的答复,见下图。
141 0
Struts,你为何死不悔改!
|
Web App开发 Java Apache
struts
运行流程 客户端浏览器通过HTTP请求,访问控制器,然后控制器读取配置文件,然后执行服务器端跳转,执行相应的业务逻辑,然后,在调用模型层,取得的结果展示给jsp页面,最后返回给客户端浏览器 组成部分 struts 视图 标签库 控制器 action 模型层 ActionFrom JavaBean struts maven 安装官网 : https://struts.
987 0
|
Web App开发 XML Java
JakartaEE Struts2使用
1. Struts2下载 解压后的目录结构如下: 图1.png 从一个高水平角度看,Struts2 是一个MVC拉动的(或MVC2)框架,Struts2 的模型-视图-控制器模式是通过以下五个核心部分进行实现的: 操作(Actions...
969 0
|
Java 数据库连接
[Struts]HibernatePlugIn for Struts(转贴)
这个Plugin的作用是在Struts应用程序启动时进行hibernate的初始化操作,原文HibernatePlugIn for Struts,步骤很简单: 1、在struts-config.xml里增加: <plug-in className="org.
1145 0
|
SQL JavaScript 前端开发
|
Java 数据安全/隐私保护 开发者
|
Web App开发 JavaScript Java