传奇大掌柜电视剧43集:struts2如何访问Application、Session、Request等http对象?及调试技巧

来源:百度文库 编辑:中财网 时间:2024/04/28 22:08:49

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页面添加

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中的如下配置:

   

 

针对上述配置,在地址栏中可以有两种访问方式

http://localhost:port/projectName/namespace/ActionName!methodName.action该形式在没有method属性的情况下,会调用!后面的方法名

http://localhost:port/projectName/namespace/ActionName.action该形式会自动调用method属性指定的方法

如果标签中没有指定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文件中的标签所定义,是请求重定向.而不是请求转发默认的type=”dispatcher”。

日期标签控件的引用:,,

 

2、 验证框架:服务器端xml验证、客户端验证

基于xml的服务器端验证:必须继承ActionSupport类、必须指定inuput视图。纯写一个xml文件对表单有是每个字段进行配置而验证。

基于xml的客户端验证:首先要保证基于xml的服务器端验证是正常的。需要在表单中设置属性validate=”true”,如果在表单中写上action,namespace的话,必须分开分别赋值。必须在有表单的jsp页面头信息写上<s:head/>标签。

基于服务器的validate()方法进行验证:

基于服务器的validateMethodName()方法进行验证:

 

总归以上几种方式的验证顺序是:xml,validateMethodName,validate