struts2安全问题,简述struts2框架处理异常的基本流程

  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等语法错误不会影响发布。

  我读研究生已经半年多了。这段时间除了上课和玩,可以说也学到了差不多一半本科的东西,除了在博客上变懒了。

  现在又要开始实习了,我就把最近一段时间总结的东西写下来,以备后用。

struts2安全问题,简述struts2框架处理异常的基本流程