struts2安全问题,简述struts2框架处理异常的基本流程
1.统一字符集
要避免页面或数据库出现乱码,首先要统一页面、Struts和数据库的字符集。
页面通常设置在以下两个地方:
meta http-equiv=Content-Type Content= text/html;Charset=utf-8 (html代码)
% pagepagecoding="utf-8" …% (JSP代码)
必须在Struts.xml配置文件中设置struts:
constant name=" struts . i18n . encoding " value=" utf-8 "/
Struts2中struts.i18n.encoding的默认值是utf-8。设置该值等效于始终调用HttpServletRequest对象的setCharacterEncoding方法。
在数据库中,可以通过默认字符集… collate …来指定所创建数据库的字符集,也可以通过默认字符集=… collate=…来指定数据表的字符集。
以上三者的一致性可以保持整个系统从页面到JavaEE代码到数据库的字符集统一。
2 .动作扩展
一般来说,如果延长动作是默认的”。action "或者没有扩展名,可以直接在Struts2的web.xml配置文件中设置,如下所示:
过滤器
筛选器名称结构2/筛选器名称
过滤级
org . Apache . struts 2 . dispatcher . ng . filter . strutspreparareandexecutefilter
/筛选器类
/过滤器
过滤映射
筛选器名称结构2/筛选器名称
url模式/* /url模式
/filter-映射
这也是MyEclipse的默认设置。
但是,如果你想改变动作的延伸,比如”。do”,那么除了将上面url-pattern标签中的/*更改为*。做:
url模式*。do /url模式
您还需要在struts.xml文件中设置struts.action.extension属性的值,如下所示:
constant name=" struts . action . extension " value=" do "/
否则,Tomcat仍然找不到您指定的Action类。默认情况下,MyEclipse不会对此进行补充。
3.找不到与结果输入相对应的页面
如果实现的操作继承自ActionSupport类,即使在操作的执行方法中没有返回“input”字符串,仍会出现此错误:
没有为操作com定义结果。登录和结果输入
原因是从ActionSupport类继承的动作会自动验证setter获取的表单数据,即验证其数据类型。如果表单输入的数据类型与动作中接收数据的变量类型不一致,如向Date类型的变量传入非法字符串,ActionSupport类将使动作跳过execute方法(或其他动作执行方法),直接返回“input”字符串。
解决方法是检查变量的类型,尽量改变不合适的类型(如日期等。)转化为更一般的类型(比如String等。),同时在前端验证格式是否合法。
4.现有错误将影响项目发布。
如果当前Web项目仍然存在严重错误,那么通过MyEclipse将其部署到服务器(Tomcat)的操作将会失败。这种类型的错误包括:
1.Java源代码中仍然存在语法错误。
2.引用的外部jar包无效(构建路径)
3.配置文件(web.xml、struts.xml等)中存在语法错误。)
必须先解决这些错误,然后才能发布项目。而html或js等语法错误不会影响发布。
我读研究生已经半年多了。这段时间除了上课和玩,可以说也学到了差不多一半本科的东西,除了在博客上变懒了。
现在又要开始实习了,我就把最近一段时间总结的东西写下来,以备后用。