分享

struts2如何访问Application、Session、Request等http对象?及调试技巧

 英昌知识汇聚馆 2011-11-21

struts2调试技巧(包括4)

1、  设置开发模式为调试模式。修改struts.properties

devMode=true

2、增加调试包。拷贝struts2-config-browser-plugin-2.0.14.jarlib目录下。

在浏览器中访问: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如何访问ApplicationSessionRequesthttp对象?

struts2对以上3个对象进行了封装。查看文档可知:

获取session两种方法:1ServletActionContext.getRequest().getSession();

2Map 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.propertiesstruts-default.xmldefault.properties文件:

struts.xmlstruts2框架的核心配置文件。

(说明:在struts.xml中的如下配置:

<packagenamespace=namespace>

    <actionname=ActionNameclass=”…”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.xmlstruts2核心包中的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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多