为什么学习struts2:struts2可扩展,简化web开发周期,模块化,无入侵式,拦截器等作用和功能使其成为web层学习使用首选。
struts体系结构:如下图所示,当用户请求来了之后,服务器调用web.xml文件,根据其中配置的filter属性过滤请求,默认放行不带后缀和.action请求路径,然后转入struts2框架中处理,经过一系列拦截器,再根据struts.xml配置文件,转到某个action处理请求,返回到指定视图。
struts主要内容:
四种常用转发方式:dispatcher,redirect,redirectAction,plainText,其中dispatcher为默认值,相当于forward,而redirect就是重定向到某个页面,redirectAction则是重定向到某个action,plainText则是显示源代码所用。
请求参数接收:在action中定义和请求页面(jsp等)相同名称的参数,生成相应的get()方法即可获取此参数。
动态方法调用:在action的name属性后加*(通配符),然后method属性值改为{1}即可动态调用。
文件上传:在action中定义File参数 {filename}和{filename}FileName,并生成get()方法,在相应的执行方法中最后执行org.apache.commons.io.FileUtils.copyFile(File srcFile, File destFile)方法即可完成上传。
自定义拦截器:需配置interceptor-stack,包括默认的和自己的。
方法校验:手工校验和xml配置校验。
ognl表达式:如果要用到ognl表达式那么最好页面上都用ognl表达式来获取参数,提交参数。
ps:最近常常听说的strutsMVC结构,总结如下:struts的model是值的action和actionform,struts建议用一组javabean来表示系统的内部状态,利用EntityBean和SessionBean来表示这种内部状态;view是指视图jsp等;而controller是指的actioncontext和actionmapping,actioncontext是用来接收用户请求,actionmapping则负责建立action和视图之间的联系。
struts2的结果集用来解释接口和抽象类是最好的例子了