一、1、struts2struts2是mvc设计思想的一个实现,可以将项目低耦合,提高扩展性2、struts2和struts1的区别struts2不是struts1的升级,而是继承的下xwork的血统,它吸收了struts1和webwork 的优势。
struts2的action是原型,安全的,struts2的action是单例,非安全3、步骤:1、导入包2、在web.xml文件中,加入struts2的核心拦截器3、在src下放入struts2的xml struts.xml4、urlhttp://localhost:8080/Struts2_01_HelloWorld/demo/hello.action二、1、默认值2、转发和重定向的区别转发:url显示的依然是上一个的url,共享上一次的请求重定向:url显示的是下一个的url,不共享3、urlhttp://localhost:8080/Struts2_02_Default/demo/hello.action4、路径http://localhost:8080/Struts2_02_Default/demo/a/b/c/hello.action1、原路径找不到,http://localhost:8080/Struts2_02_Default/demo/a/b/hello.action2、如果1找不到,http://localhost:8080/Struts2_02_Default/demo/a/hello.action3、如果2找不到,http://localhost:8080/Struts2_02_Default/demo/hello.action3、如果3找不到,http://localhost:8080/Struts2_02_Default/hello.action三、11、自定义action继承ActionSupport2、功能方法必须满足格式public String 名字()throws Exception{....};3、urlhttp://localhost:8080/Struts2_03_Action/demo/a.action四、1、如何给action传入参数注意:赋值的必须有封装的set方法,通过el表达式获取的时候,必须有封装的get 方法1、直接给单个参数赋值,在action里建立一个变量,名字与参数的名字一样2、为对象的某个属性赋值,在action里建立一个对象,将参数改为对象名.属性的格式五、1、转发和重定向的区别转发到下一次的时候,url依然是上一次的url,共享上一次的request重定向到下一次的时候,url是下一次的url,不共享上一次的request2、struts2的result的type转发:共享上一次action重定向:不共享上一次action1、转发到下一个jsp,html:dispatcher2、重定向到下一个jsp,html:redirect3、转发到下一个action:chain转到同一个包下的action转发到不同包下的action4、重定向到下一个action:redirectAction转到同一个包下的action转发到不同包下的action六、1、为了分模块开发,可以设置多个xmL文件。
最后综合到struts.xml注意:路径和包名不能重复七、1、局部转换器,只对某一个action类起作用1、新建一个类,继承 StrutsTypeConverter2、在与action类中的同包下,新建一个文件,名字格式有要求:类名-conversion.properties2、全局转换器1、在src下新建一个文件,名字格式有要求:xwork-conversion.properties3、urlhttp://localhost:8080/struts2_10_Conversion/login.jsp八、1、struts2核心功能就是使用拦截器实现的。
2、自定义拦截器(按照过滤器的思想来学习),用来拦截某个action过滤器是根据url拦截器,拦截器是拦截指定的action1、定义一个类,实现接口Interceptors2、在struts.xml中定义拦截器3、在需要拦截的action下,配置引用拦截器,并且注意最后要加上系统默认的拦截器3、urlhttp://localhost:8080/Struts2_12_Interceptor/demo/delete.actionhttp://localhost:8080/Struts2_12_Interceptor/demo/update.action加上sessionhttp://localhost:8080/Struts2_12_Interceptor/setSession.jsp清除sessionhttp://localhost:8080/Struts2_12_Interceptor/clearSession.jsp九、1、上传1、设置多功能表单和post提交方式enctype="multipart/form-data"method="post"2、在action中定义一个file对象,名字和type=file的input的name属性一致,如果要获取文件的名字,定义一个字符串,字符串的名字是:type=file的input 的name属性+FileName3、处理路径文集4、将上传的文件复制到目标文件中2、urlhttp://localhost:8080/struts2_12_Upload/upload.jsp3、可以使用配置xml的形式上传struts2的核心功能就是使用的拦截器<!-- 配置名字为fileUpload的拦截器 --><interceptor-ref name="fileUpload"><!-- 配置允许上传的文件类型 --><param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/pjpeg,image/x-png</param><!-- 配置允许上传文件的大小(单位字节) --><param name="maximumSize">80000</param></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref><!-- 动态设置保存文件的路径 (Action的属性值)--><param name="savePath">/upload</param>4、上传一般使用struts2+jquery的异步上传插件(uploadify)在上传之前进行一些验证,如果不通过,不提交到服务器。
只有验证通过再发送的服务器5、post和get的区别post可以传输大数据,get只传输小数据,最大是4kbpost请求的时候,url没有参数,get请求的时候,url有参数十、1、下载2、urlhttp://localhost:8080/Struts2_13_Load3、result介绍<result name="success" type="stream"><!-- 这个流用来读取服务器上的文件 --><param name="inputName">imageInputStream</param><!-- 配置要下载的文件的mime类型 --><param name="contentType">${contentType}</param><!-- 配置处理文件的方式,有下载和阅览 --><param name="contentDisposition">${contentType}</param></result>4、编码和解码编码:看得懂--->看不懂解码:看不懂--->看得懂十一、strusts2中的服务器验证,推荐使用js前端验证1、xml配置验证1、全局验证(验证所有与execute签名相同的方法)在验证的action所在包下,建立一个xml文件格式:action的名字-validation.xml2、部分验证(选择性的验证某些与execute签名相同的方法)在验证的action所在包下,建立一个xml文件格式:action的名字-方法名-validation.xml2、使用validate方法验证1、全局验证(验证所有与execute签名相同的方法-struts2的功能方法)1、重写ActionSupport的validate()方法,这个方法会验证所有与execute方法签名相同(public String methodName(){})的方法2、如果不符合要求,调用addFiledError(错误的名字,错误的具体描述)3、如果错误集合不为空(验证失败),会返回input视图4、在要显示的页面使用EL表达式获取错误信息2、部分验证(选择性的验证某些与execute签名相同的方法)1、定义如下格式方法(其中的validateLogin是需要验证的public String login(){}方法)public void validateLogin(){}2,3,4步骤同上3、null和""区别?4、验证器以下是各类现场级和非现场验证在Struts2的列表:日期验证器:<field name="birthday"><field-validator type="date"><param name="min">01/01/1990</param><param name="max">01/01/2000</param><message>Birthday must be within ${min} and ${max}</message></field-validator></field>double 验证器:<field name="percentage"><field-validator type="double"><param name="minExclusive">0.123</param><param name="maxExclusive">99.98</param><message>Percentage needs to be between ${minExclusive}${maxExclusive} (exclusive)</message></field-validator></field>email 验证器:<field name="myEmail"><field-validator type="email"><message>Must provide a valid email</message></field-validator></field>表达式验证器:A Non-Field Level validator that validates based on regular expression supplied.<field-validator type="expression"><param name="expression">....</param><message>Failed to meet Ognl Expression ....</message></field-validator>int 验证器:<field name="age"><field-validator type="int"><param name="min">5</param><param name="max">50</param><message>Age needs to be between ${min} and ${max}</message></field-validator></field>正则验证器:<field name="myStrangePostcode"><field-validator type="regex"><param name="fieldName">myStrangePostcode</param> <param name="expression"><![CDATA[([aAbBcCdD][123][eEfFgG][456])]]></param></field-validator></field>必须验证器:<field name="username"><field-validator type="required"><message>username must not be null</message></field-validator></field>requiredstring validator:<field name="username"><field-validator type="requiredstring"><param name="trim">true</param><message>username must not be null</message></field-validator></field>stringlength 验证器:<field name="username"><field-validator type="stringlength"><param name="minLength">10</param><param name="maxLength">10</param><param name="trim">true</param><message>Your username needs to be 10 characters long </message></field-validator></field>url 验证器:<field-validator type="url"><param name="fieldName">myHomePageURL</param><message>Invalid homepage url</message></field-validator>十二、1、国际化其实就是配置多个properties文件,根据不同的Locale值选择性的显示某个语言2、步骤1、在src下新建一些properties文件,格式是有要求的。