Struts2-概述

  我们学习完了Java基础,接下里我们温习一下Struts2的内容。

 1.   Struts2的控制器

  我们知道MVC程序设计模型当中,C就是controller的意思,它在程序当中的功能主要是负责接收用户的输入、调用Model层操作数据库的数据、相应View前台页面。Web当中用Servlet技术作为控制,而我们今天讲的Struts2中用Filter作为控制器控制器。使用Filter作为控制器的好处是我们可以在程序中控制所有资源的访问,包括静态页面

  Servlet和Filter的比较:Servlet可以完成的Filter都可以完成,但是Filter有其独有的拦截器功能是Servlet很难完成的,而且Filter当中还有一个FilterChain过滤链的行为也是Servlet所没有的。所以Filter相较于Servlet来讲作为控制器明显的具有更好的应用

  2.  Struts2的优点和优势

  我们知道了Struct2是作为控制器存在的,那么它有什么好处呢?或者说相较于普通的WEB应用它有什么优势呢?它具体帮助我们做了哪些事情呢?第一点是Struts2框架很好的帮我们省去了封装前台页面表单中的参数,它可以自动的将表单当中的参数封装成一个对应属性的Java类对象的POJO。第二点是它可以帮助我们在Action方法只返回一个字符串的情况下通过简单的配置就可以去到我们想去的相应页面。这两点很方便的帮助我们节省了代码的编写,更有利于我们管理模块。

  除了以上两点之外,Struts2还给我们提供了WEB应用开发过程中一些常见问题的解决方案:用户输入的合法性验证、统一的布局、可扩展性、国际化和本地化、支持Ajax、表单重复提交、文件的上传和下载。

 Struts2是通过一系列的拦截器完成了框架爱的大部分的工作,在Struts2中插入一个拦截器相当简便易行,所以它有很好的扩展性

  Struts2中,表单数据可以被映射成任意一个POJO的对象,任何一个POJO都可以是一个普通的Java类。

  在页面显示是,Struts2用OGNL来显示各种对象模型,可以不再使用EL和JSTL来显示。

  3.如何使用Struts2

  ① 导入jar包

  ②在web.xml中配置Struts2的核心Filter:FilterDispacher

  ③在类路径下加入Struts2的核心配置文件struts.xml来处理请求和相应页面

  4.接下来,描述一下Struts2的核心--struts.xml文件的使用

  ①请求的扩展名问题

  Struts2默认处理请求的扩展名为action和空字符串,可以在default.properties里边找到:struts.action.extension=action,,。

  我们可以修改处理请求的扩展名,三种方法:在struts.xml文件中配置常量(<constant name="struts.action.extension" value="action,,do"></constant>);或者直接在default.properties文件中重复设置覆盖(struts.action.extension=action,,);在web.xml文件中设置初始化参数。

  需要注意的是:当三种情况都存在,web.xml中配置的过滤器的初始化参数起作用;当过滤器的初始化参数不存在时,default.properties起作用,这和三者的加载顺序有关。

  ② 框架的字符编码问题

  框架默认的字符编码方式为utf-8,也是在default.properties当中配置的:struts.i18n.encoding=UTF-8。

  像配置扩展名一样,也可以采取三种方式来配置,我们不再一一叙述,我们推荐在struts.xml中进行配置,如:<constant name="struts.i18n.encoding" value="GBK18"/>

  ③框架的开发模式

  我们常常需要修改struts.xml文件的内容,但是重新启动服务器的话太过于麻烦,所以我们在开发的过程中将框架的模式设计为开发模式,自动重新加载这个文件,当然上线以后还需要设置回默认的,以免产生不必要的麻烦。

  <constant name="struts.configuration.xml.reload" value="true"></constant>--不用重启服务器就可重新加载struts.xml文件

  <constant name="struts.devMode" value="true"></constant>--开发模式的设置,实际应用中更加的常见

  ④框架的命名空间namespace的问题

  namespace其实是<package>标签的一个属性,package标签是用来模块化管理action的,<package>标签的name属性理论上是唯一的。当name重复且action的name也一样时,那么后边的action会起作用。有namespace的<package>标签下的action标签的访问方式是:namspace/+action的name属性。

  ⑤框架中的action问题

  根据解析的请求路径,获取action的名称,当框架中寻找匹配的完整的全类名,反射创建Action的对象。因为是反射创建,所以必须要求Acion类中有一个公共的无参的构造器。每个action请求都会创建一个Action的实例,所以struts2框架是多实例的,他解决了线程安全的问题,但是它的效率不高

  ⑥框架中方法的编写

  public string methodName(){ reuturn "string"}

  在配置文件中,有时为了简化配置(当Action类中有很多方法时),我们可以使用通配符来简化配置,从而一个action节点可以代表一个Action类中的多个名称相似的方法的处理。通配符用*表示,填写在action的name属性中,{1}、{2}表示某一个方法的名称或者返回值的名称或者要去的页面名称。

  5.我们在struts.xml中配置的属性,很多都是在default.properties和struts-default.xml中配置的,所以这两个源码的配置文件需要我们详细的看一看,掌握。











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值