struts2调试技巧:(包括4点) 1、 设置开发模式为调试模式。修改struts.properties devMode=true 2、增加调试包。拷贝struts2-config-browser-plugin-2.0.14.jar到lib目录下。 在浏览器中访问:http://localhost:port/projectName/config-browser/index.action 3、调试标签的使用。只需要在有表单的jsp页面添加<s:debug></s:debug> 4、在URL上增加调试命令。 http://localhost:port/projectName/test.action?debug=xml http://localhost:port/projectName/test.action?debug=console
struts2如何访问Application、Session、Request等http对象? struts2对以上3个对象进行了封装。查看文档可知: 获取session两种方法:1、ServletActionContext.getRequest().getSession(); 2、Map session=(Map)ActionContext.getContext().getSession(); session.put(“myId”,myprop);//可以改变session中原先的值。 获取Application:Mapapplication=ActionContext.getContext().getApplication(); 另外,org.apache.struts2.ServletActionContext作为辅助类(HelperClass),可以帮助您快捷地获得下面这几个对象。 HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); HttpSession session = request.getSession(); 深入struts.xml配置文件、struts.properties、struts-default.xml、default.properties文件: struts.xml:struts2框架的核心配置文件。 (说明:在struts.xml中的如下配置: <packagenamespace=”namespace”> <actionname=”ActionName”class=”…”method=”methodName”></action> </package>
针对上述配置,在地址栏中可以有两种访问方式 http://localhost:port/projectName/namespace/ActionName!methodName.action该形式在没有method属性的情况下,会调用!后面的方法名 http://localhost:port/projectName/namespace/ActionName.action该形式会自动调用method属性指定的方法 如果<action></action>标签中没有指定method属性,默认会调用action类中的exexute()方法。)
struts.properties:主要用来设置变量的申明 default.properties:struts2核心包中的属性文件,当没有申明struts.properties文件中的变量时,struts2运行时会采用该文件中默认的变量。struts2的常量读取顺序:strtus-default.xml(保存在struts-core-2.x.x.jar文件中)、struts-plugin.xml(保存在struts-core-2.x.x.jar文件中)、struts.xml(web应用默认的xml配置文件)、struts.properties(web应用默认的struts2的配置文件)、web.xml(web应用的配置文件)。如果在多个文件中配置了相同的struts常量,那么,后面的将覆盖前面的常量。 struts-default.xml:struts2核心包中的xml文件,提供相关的内置组件,拦截器,视图等组件。struts.xml中所继承的package都是从该文件中而来的。
1、数据重复提交的问题:通过在action的类中的方法返回一个字符串,该字符串被struts.xml文件中的<resulttype=”redirect”></result>标签所定义,是请求重定向.而不是请求转发默认的type=”dispatcher”。 日期标签控件的引用:<s:datetimepicker></s:datetimepicker>,<s:date></s:date>, <s:head/>
2、 验证框架:服务器端xml验证、客户端验证 基于xml的服务器端验证:必须继承ActionSupport类、必须指定inuput视图。纯写一个xml文件对表单有是每个字段进行配置而验证。 基于xml的客户端验证:首先要保证基于xml的服务器端验证是正常的。需要在表单中设置属性validate=”true”,如果在表单中写上action,namespace的话,必须分开分别赋值。必须在有表单的jsp页面头信息写上<s:head/>标签。 基于服务器的validate()方法进行验证: 基于服务器的validateMethodName()方法进行验证:
总归以上几种方式的验证顺序是:xml,validateMethodName,validate |
|