`

模拟struts2处理原理

阅读更多
模拟struts 2处理原理


模拟struts2处理流程的原理,流程大概如下:
1.启动服务器,Listener监听器会利用dom4g自动读取struts.xml文件保存起来(相当于服务器启动时通过配置文件web.xml加载struts.xml)。
2.当用户发出请求URL: * . action时,Filter过滤器会处理请求,调用相对应的自定义过滤器处理类StrutsFilter.
3.StrutsFilter类会调用doFilter方法匹配用户请求的URL里面的action名字和struts.xml文件里面的action名字是否匹配,如果匹配则继续下面操作,否则认为该请求不是action,请求跳转到对应的页面,结束处理。该过滤器相当于struts.xml里面的:
<filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

4.如果匹配,则获取action类并创建该类对象获取该类里面的所有属性:
    a.code属性如果属性是字符串且名字与表单提交过来的名字一致,则自动设置到action对象里面去。例如:表单<input type="text" name="code"/>  action类里面: private string code ; setCode()  getCode()方法
    b.admin对象如果属性是bean对象,则把表单里所有元素设置到action的bean里面去。
       <input type="text" name="admin.name"/><input type="password" name="admin.password">   action类里面: private Admin admin ; setAdmin() getAdmin()方法
     c.adminService从Context里面取出项目启动时保存的adminService,也保存到action类中。
     @Resource
    private AdminService adminService ;
    此处用了struts的注解系统在调用action时会自动注入,所以adminService不用写set和get方法。自动注解要在applicationContext.xml文件里配置一句话:
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor">
    </bean>
action类里面要导包:import javax.annotation.Resource;

最后调用action里面的public String execute(){
   Admin admin ;
   admin = adminService().checkLogin(admin) ;//因为action为服务器跳转,admin对象会保存在request里面,success对应的页面可以通过struts标签<s:property name="admin.name"/>取得admin对象的name属性
   return "success" ;
}方法
,该方法有两种返回结果,如果操作成功返回success,反之则返回error。
5.获取struts.xml里面的success和error所对应的跳转页面<result name="success">,在通过反射机制获取action类里面所返回的字符串进行匹配,最后跳转到处理结果页面。
分享到:
评论

相关推荐

    servlet模拟struts1工作原理

    使用servlet模拟struts1的工作原理,解析xml,处理请求,自动封装数据

    servelt模拟struts1框架

    使用servlet模拟struts1的工作原理,解析xml,处理请求,自动封装数据

    Java学习笔记-个人整理的

    {1.4.1.1}浮点数原理}{24}{subsubsection.1.4.1.1} {1.4.2}格式化输出浮点数}{24}{subsection.1.4.2} {1.4.3}\texttt {char}}{24}{subsection.1.4.3} {1.4.4}转义字符}{25}{subsection.1.4.4} {1.4.5}Boolean ...

    网络安全培训方案.docx

    网络安全培训方案 . z. 培训方案 对学生知识的要求 对Windows、Linu*及SQL语句有一定的了解即可 学生的知识能力提高 本课程重点培训学生的Web渗透测试能力,通过20天的...struts2漏洞详解 第二节 struts2漏洞实战 stru

    Web安全深度剖析(张柄帅)

    8.3.1 Struts2代码执行漏洞 166 8.3.2 ThinkPHP命令执行漏洞 169 8.3 防范命令执行漏洞 169 第9章 文件包含漏洞 171 9.1 包含漏洞原理解析 171 9.1.1 PHP包含 171 9.1.2 JSP包含 180 9.2 安全编写包含 184 9.3 小结 ...

    JAVA上百实例源码以及开源项目源代码

    原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制  Java二进制IO类与文件...

    JAVA上百实例源码以及开源项目

    原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制  Java二进制IO类与文件...

    php和mysql开发的报刊订阅管理系统

    Delphi+access《数据库原理与应用》题库系统 JSP+SQLServer网上考试系统的设计与实现 Delphi+ACCESS三层图书管理 JSP+SQLServer网上书店系统 Delphi+access商品销售管理系统 JSP+SQLServer超市管理系统 Delphi+sql...

    缺陷管理系统。Apache+PHP+MySQL

    Delphi+access《数据库原理与应用》题库系统 JSP+SQLServer网上考试系统的设计与实现 Delphi+ACCESS三层图书管理 JSP+SQLServer网上书店系统 Delphi+access商品销售管理系统 JSP+SQLServer超市管理系统 Delphi+sql...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理Struts和Hibernate。 WebStorage HTML新增的本地存储解决...

Global site tag (gtag.js) - Google Analytics