天天看点

struts基础

概述:struts2是遵循MVC设计理念的开源web框架,它是在web框架的基础上发展而来的,是webwork技术与struts技术的结合。    工作原理:客户端发送一个http请求,该请求经过一个过滤器链,当调用StrutsPreparedAndExecuteFilter过滤器时,Action映射器将查找需要调用的action对象。并返回一个action代理,action代理会通过配置管理器从struts.xml中读取struts2的相关配置,读取完成后action容器调用指定的action对象来处理请求然后返回个客户端,在调用action对象之前需要经过一系列拦截器,处理之后发送给客户端也需要经过拦截器,与之前经过的拦截器是相同并且顺序相反的。简单来说。就是http请求通过过滤器给指定的action对象来处理请求,然后发送出去。    Action对象:在struts2 API中,Action对象是一个接口。其中包含了五个静态成员变量和一个execute()方法,其中,静态变量SUCCESS代表action执行成功的返回值,并且返回到成功页面。NONE也代表action执行成功的返回值,但不需要返回到成功页面。ERROR代表action执行失败的返回值。INPUT代表需要返回到某个输入信息的页面的返回值,如在修改某些信息时,加载数据后需要返回到修改页面。LOGIN代表需要用户登录的返回值,如验证用户是否登录时,action验证失败,需要用户重新登录,就可以将action对象处理的返回值设置为LOGIN。当然你也可以自己设置其他的返回值。比如在execute方法中return "hahaha"。    动态Action对象:通过重写action对象的execute方法处理请求只适合比较单一的业务逻辑请求,但是在实际的开发应用中。业务请求的类型是多种多样的,如果通过创建多个action对象,编写多个execute方法来对应这些请求就太麻烦了。struts2框架中,提供了Dynamic Action这一概念,称之为动态Action。比如在action对象中,编写add(),update(),select(),delete()方法,然后在请求action的url后面加上方法名称。中间用!隔开。例如" 跳转"这样就可以直接用action对象的add()方法来处理请求。    struts2配置文件:在web.xml中配置了StutsPreparedAndExecuteFilter,在url-pattern中可以选择/*、*.action、*.do。在struts.xml存在一个包的概念,它类似java中的包。配置文件中的包使用package元素声明,已经配置好的包可以被其他包所继承,从而提高配置文件的重用性。 其中name代表包的名称,以方便在其他处引用此包,extends用于声明他的“父”包,namespace指定访问此包下的aciton需要访问的路径。struts.xml中使用元素来配置action对象。action的name用来配置action对象被请求的url映射,比如之前的FirstAction就是name,class指定action对象的类名。method指定调用action对象时,调用action对象的哪一个方法。result中的name用来指定action对象的返回值,type指定返回结果的类型,比如转发,重定向等。在struts.xml中,还支持通配符的使用。    Struts2中还提供了map类型的request,session,application,可以从ActionContext中获得。 Map request=ActionContext.getContext().get("request");get方法也可以获得session,application但是ActionContext直接提供了getSession()方法和getApplication()方法。

继续阅读