解决struts2配置文件无提示问题

合集下载

struts2常见错误

struts2常见错误

1. Console错误:Exception starting filter struts2No mapping found for dependency [type=com.opensymphony.xwork2.ObjectFactory, name='default'] in public void com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.setObjectFactory(com.o pensymphony.xwork2.ObjectFactory). - Class: com.opensymphony.xwork2.inject.ContainerImpl File: ContainerImpl.java解决:struts.xml位置不对。

2. Console错误:Exception starting filter struts2ng.NoClassDefFoundError: org/apache/commons/lang3/StringUtils解决:缺少包:commons-lang3-3.1.jar3. Console错误:Could not create JarEntryRevision for[jar:file:D:/application/apache-tomcat-6.0.30/webapps/SSH1/WEB-INF/lib/struts2-core-2.3.4.j ar]!ng.NoClassDefFoundError:org/apache/commons/io/FileUtils缺少包:commons-io-2.0.1.jar4. Console错误:Dispatcher initialization failedng.RuntimeException:ng.reflect..InvocationTargetException缺少包:javassist-3.11.0.GA.jar5. Console错误:Caught exception while loading file struts-default.xml - [unknown location]解决:由于lib包冲突造成的,将两个解析xml用的jar从项目里移到tomacat的lib下面就ok了,xml-apis.jar xerces-2.6.2.jar6. Console错误:Exception starting filter struts2Error building results for action login in namespace - action - file:/E:/apache-tomcat-6.0.14/webapps/testStruts2/WEB-INF/classes/struts.xml57原因:在web.xml已声明使用模板,并对所有的类进行了监听,但在处理过程中,发现不知道到哪里去找模板的配置文件,即在struts.xml中已使用了模板,但并没有告诉程序应该到哪去解析这些内容,即titles-default.java文件应该声明出来,原因1:在struts.xml中错误的声明如下:showWelcomePage应改为:showWelcomePage原因2:titles.xml文件的错误配置menu_1.jsplogin_form.jsp正确的配置为:页面显示情况如下:错误配置如下:正确配置如下:在value属性中,以"/"开头表示地址,如果不以“/”开头,则系统会默认为内容7. 执行增加操作时,直接对对象进行操作,对象中各字段值都正确,但插入数据库后乱码解决(1) 统一页面和数据库编码为utf-8(2)修改hibernate的配置文件,修改url属性为:jdbc:mysql:/127.0.0.1:3306/shop?useunicode=true&characterEncuoding=utf-88. 在进行页面跳转时,已经跳转到了相应的页面,但显示结果页面不正确。

struts配置文件详解

struts配置文件详解

解决在断网环境下,配置文件无提示的问题我们可以看到Struts.xml在断网的情况下,前面有一个叹号,这时,我们按alt+/ 没有提示,这是因为”/dtds/struts-2.0.dtd”是一个网络地址,如果上网的话,IDE会自动帮我们下载此文件,如果断网就没有办法了,但是我们还是有解决方法的.首先在源码包里找到struts-2.0.dtd这个文件在MyEclipse中菜单栏中选择:window Preferences MyEclipseFiles and EditorsXml xml Catalog在右边的下拉框中选择User Specified Entries 点击Add按钮左边选中Catalog Entry右边的location中点击File System在弹出的对话框中将搜索到的文件全路径复制上去,并选中struts-2.0.dtd在key type下拉框中选择URIkey文本框中填写: /dtds/struts-2.0.dtd ,点击OK即可. 这时我们可以看到Struts.xml文件中还有叹号,我们可以在Struts 标签与package标签中打入一个回车后保存即可.首先,我们先配置一个HelloWorld程序环境的搭建和前面讲的一模一样,导6个jar包,复制struts.xml文件到src目录下,改写web.xml文件,将struts整合到web工程中,这里就不再演示以下是代码:Chapter1Actionpackage chapter1.action;public class Chapter1Action {private String message;public String getMessage() {return message;}public String execute() {message = "我的第一个Struts2程序";return "success";}}Struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><constant name="struts.enable.DynamicMethodInvocation" value="false" /><constant name="struts.devMode" value="false" /><constant name="struts.i18n.encoding" value="UTF-8" /><constant name="struts.serve.static.browserCache" value="false" /><include file="chapter1.xml" /></struts>chapter1.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="chapter1" namespace="/chapter1" extends="struts-default"><action name="HelloWorld" class="chapter1.action.Chapter1Action" method="execute"><resultname="success">/WEB-INF/JspPage/chapter1/HelloWorld.jsp</re sult></action></package></struts>HelloWorld.jsp<%@ page language="java" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>HelloWorld</title></head><body>${message}</body></html>问题一:大家可以看到这里用到了EL表达式,我们知道EL表达式只能取出page,request,session,application四个范围之一里面的数据,但是我这里并没有将任何数据放入到四个范围中,为什么这里能够取出数据来呢?问题二: Chapter1Action是一个非常普通的类,它不是Servlet,为什么能够处理用户的请求呢?Struts2 用于处理用户请求的Action,没有与Servlet API耦合,显示无法处理用户请求,而Struts2提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并调用Action的execute方法来处理用户的请求. Struts.xml配置中包与action的介绍<package name="chapter1" namespace="/chapter1" extends="struts-default"><action name="HelloWorld" class="chapter1.action.Chapter1Action" method="execute"><resultname="success">/WEB-INF/JspPage/chapter1/HelloWorld.jsp</re sult></action></package>Struts2 框架中使用包来管理action,避免了Servlet在web.xml中难以管理的与维护的局面.包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action,在实际应用中,我们应该把一组业务功能相关的action 放在同一个包下.配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,如果其他包要继承该包,必须通过该属性进行引用,包的namespace属性用于定义该包的命名空间,命名空间作用为访问该包下的action路径的一部分,见示例.namespace属性可以不配置,如果不指定该属性,默认的命名空间为””通常每个包都应该继承struts-default包,因为struts2很多核心功能都是拦截来实现的,如,从请求中把请求参数封闭到action,文件上传和数据验证等都是通过拦截器实现的,struts-default定义了这些拦截器和Result类型,可以这么说,当包继承了struts- default 才能使用struts2提供的核心功能,struts-default包是在struts2-core-2.xx.jar文件中的struts-defalut.xml中定义,struts-default.xml也是struts2默认配置文件,struts2每次都会自动加载 struts-default.xml文件.package还有一个abstract=”true”属性,指定此包为抽象包,和抽象类的概念差不多,说明此包只能被其他包继承,则它里面不允许包含action元素.<action name="HelloWorld" class="chapter1.action.Chapter1Action" method="execute"><resultname="success">/WEB-INF/JspPage/chapter1/HelloWorld.jsp</re sult></action>Action 元素method属性,默认值为method=”execute”,也就是当action接收到请求后,交给哪个方法去处理,默认的是交给execute 方法去处理,当然,也可以交给其他方法,后面会讲解到.<resultname="success">/WEB-INF/JspPage/chapter1/HelloWorld.jsp</re sult>result元素主要定义视图的跳转和返回的行为及类型,后面会详细介绍.struts.xml文件的分离从上一个项目实践中可以看到,我们的web.xml文件非常之大,到后来是越来越难的查找与维护,看得头都是大的,Struts2配置文件可以分离,很好的解决了此问题.通过主次配置文件的分离,可以加强团队间的合作,并且互不打扰彼此的配置文件,出了问题也知道责任在哪里.在实例开发中也是这样做的,通过一个主文件中,打开全局开关,引入其他子配置文件,如:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><constant name="struts.enable.DynamicMethodInvocation" value="false" /><constant name="struts.devMode" value="false" /><constant name="struts.i18n.encoding" value="UTF-8" /><constant name="struts.serve.static.browserCache " value="false" /><include file="chapter1.xml" /></struts>常用开关的介绍<constant name="struts.i18n.encoding" value="UTF-8" />指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法<constant name="struts.action.extension" value="do" />该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理。

学习struts2——常见问题与处理

学习struts2——常见问题与处理

学习struts2.2.1遭遇滑铁卢~~~~~好多异常~~~~~好多bug~~~~好多问题~~~~~~好多困难~~~好多肥羊~~~一、Filter mapping specifies an unknown filter name ----filter标签在web.xml 里的顺序<filter-mapping><filter-name>adminOperateLogFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>adminOperateLogFilter</filter-name><filter-class>com.berheley.exam.web.filter.AdminOperateLogFil ter</filter-class></filter>这样写启动服务器时报错 Filter mapping specifies an unknown filter nameadminOperateLogFilter将这两块换个顺序就没问题了,web.xml信息的加载是有顺序的,filter在mapping之前必须要让服务器找到其定义。

<filter><filter-name>adminOperateLogFilter</filter-name><filter-class>com.berheley.exam.web.filter.AdminOperateLogFil ter</filter-class></filter><filter-mapping><filter-name>adminOperateLogFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>二、ng.IllegalArgumentException: Filter mapping specifies an unknown filter nameStruts2答:“Struts2”?大写的?are you sure?我猜你一定是看了某struts2.0的权威指南(那是一个chm文件电子书,而且你看的可能是翻译成中文的),我不知道英文版的有没有写错,但是我检查了很久后才发现中文版存在这个大小写错误。

struts2下载(使用配置文件)

struts2下载(使用配置文件)

struts2下载(使用配置文件)1.第一步web.xml2.<?xml version="1.0" encoding="UTF-8"?>3.<web-app version="2.4"4.xmlns="/xml/ns/j2ee"5.xmlns:xsi="/2001/XMLSchema-instance"6.xsi:schemaLocation="/xml/ns/j2ee7./xml/ns/j2ee/web-app_2_4.xsd">8.<welcome-file-list>9.<welcome-file>index.jsp</welcome-file>10.</welcome-file-list>11.12.<filter>13.<filter-name>struts2</filter-name>14.<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>15.</filter>16.<filter-mapping>17.<filter-name>struts2</filter-name>18.<url-pattern>/*</url-pattern>19.</filter-mapping>20.21.</web-app>第二步:struts.xml1.<!DOCTYPE struts PUBLIC2."-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"3."/dtds/struts-2.0.dtd">4.<struts>5.<package name="default" extends="struts-default">6.<action name="download" class="action.DownloadAction">7.<result type="stream">8.<param name="contentType">application/octet-stream</param>9.<param name="inputName">inputStream</param>10.<param name="contentDisposition">attachment;filename="${fileName}"</param>11.<param name="bufferSize">4096</param>12.</result>13.</action>14.</package>15.</struts>当result为stream类型时,struts2会自动根据你配置好的参数下载文件。

struts2报错整理

struts2报错整理

Struts2报错整理目录:1.struts2报错No result defined for action的解决方法 (1)2.ssh环境,Action报错后,此Action其他方法也不能访问 (3)1.struts2报错No result defined for action的解决方法1,在后台action类中重写ActionSupport中的void addActionError(String anErrorMessage)void addActionMessage(String aMessage)void addFieldError(String fieldName, String errorMessage)这三个方法,在并在其实现代码中设置断点,监控传入的参数,并可获知页面的相关报错具体原因.public void addActionError(String anErrorMessage){String s=anErrorMessage;System.out.println(s);}public void addActionMessage(String aMessage){String s=aMessage;System.out.println(s);}public void addFieldError(String fieldName, String errorMessage){String s=errorMessage;String f=fieldName;System.out.println(s);System.out.println(f);}2,在页面中加入以下标签,将错误显示出来:一、addActionError("错误内容"):Action级别的错误消息this.addActionError("错误信息1");this.addActionError("错误信息2");显示消息的标签是:<s:actionerror />显示全部的 Action级别的错误消息,可以加CSS二、addFieldError("字段名","错误信息")给一个字段(属性)添加错误消息this.addFieldError("pwd", "错误信息1");this.addFieldError("pwd", "错误信息2");显示消息的方法1:标签是:<s:fielderror />显示全部的错误消息;显示消息的方法2:<s:fielderror><s:param>field1 </s:param> 显示指定的 field1字段的错误消息<s:param>field2 </s:param> 显示指定的 field2字段的错误消息</s:fielderror>显示消息的方法3:如果什么都不写,则默认显示在相应字段上方三、addActionMessage("相关信息")需要在action中重写父类的validate方法,对参数进行校验,如果校验失败。

Struts异常处理机制

Struts异常处理机制

Struts2异常处理机制:
利用struts2的异常处理机制可以很方便的实现异常处理,不再需要在Action中捕获异常,并抛出相关的异常了,这些都交给拦截器来帮你做了。

在struts-default.xml中己经设置了拦截器,因此我们可以直接使用声明式异常.struts2-default-xml声明的拦截器如下:
Xml代码
<interceptors>
<interceptor name="exception"
class="com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor"/>
</interceptors>
异常的类型可以分为两种:局部异常映射和全局异常映射
当Action抛出异常时,会在局部中和全局中查找与之相匹配的异常,如果局部和全局中都有满足的异常映射,以局部的为准. 配置异常和跳转路径:
我们可以在Action中声明或者抛出一个异常:
如果出现了和Struts配置文件声明相同的异常那么Struts会保存异常对象. 交给异常拦截器处理:
异常拦截器如下:
注意:如果自定义拦截器有些要在。

02-Struts2的工作流程及配置文件

02-Struts2的工作流程及配置文件

Struts2的工作流程及配置文件--- ---Struts2.0的流程图从图中看到Struts2的工作流程如下:1.服务器接收到的请求首先经过一组过滤器链(实际中的其他过滤器可能还包括诸如Spring 的字符过滤器CharactorEncodingFilter、V elocity的过滤器等,一般FilterDispatcher位于过滤器的最后一个执行),过滤器链按照你在web.xml中的配置顺序在接收客户请求时顺序执行,在向客户发送响应时反序执行,Struts2的核心FilterDispatcher在web.xml中的配置如下:<filter><filter-name>setCharactor</filter-name><!-- 配置字符过滤--><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter><filter-name>struts2</filter-name><!-- 配置Struts2过滤器--><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter><filter-mapping><filter-name>setCharactor</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>注意:如果你使用的是W ebLogic6.1作为应用服务器,需要使用FilterDispatcherCompatW eblogic61替代FilterDispatcher。

Struts2开发中遇到的错误及解决方案

Struts2开发中遇到的错误及解决方案

笔者记录下自己在开发过程中所遇到的一些常见的错误和警告,以供参考:1、警告:Settings: Could not parse struts.locale setting, substituting default VM locale分析及解决方法:这是默认环境没有设置好,有两种方法可以解决。

在WEB-INF/classes/struts.properties或者src/struts.properties文件中如下配置:struts.locale=en_GB;或者在struts.xml中如下配置:<constant name="struts.locale" value="en_GB" />2、警告:No configuration found for the specified action: 'sum.action' in namespace: ''. Formaction defaulting to 'action' attribute's literal value.分析及解决方法:由于jsp文件中标签<s:form action=”sum.action”/>它对应的源文件是<form action=”/context/sum.action”>,sturts把action属性值当成了一个action name了,但这也不影响使用;但是对于使用了动态方法调用(struts.enable.DynamicMethodInvocation = true)就没有那么幸运了,提交时就会得到HTTP Status 404 - /context/sum错误。

对于以上情况,可以把标签写成<s:form action=”sum”/>及<s:form action=”sum!save”/><s: namespace=”your value”action=”sum!save” />3、ERROR:Cannot create JDBC driver of class '' for connect URL 'null'分析及解决方法:这是由于tomcat下的server.xml里的<Resource>没有配置好或没有相应的<Resource>配置,可按如下配置:<Resource name=”userDatabase” auth="Container" type="javax.sql.DataSource"maxActive="50" maxIdle="30" maxWait="10000"logAbandoned="true" username="sa" password="nenu"driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"url="jdbc:microsoft:sqlserver://localhost:1433;DatebaseName=st"/>4、ERROR:Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'分析及解决方法:这是由于JDBC的驱动没有装,可将sqlserver需要的三个驱动包msbase.jar,mssqlserver.jar,msutil.jar拷贝到tomcat的安装目录下的 common\lib文件夹下面即可。

Struts 2 异常处理的常用的解决方法

Struts 2 异常处理的常用的解决方法

一、第一个异常处理严重: Servlet.service() for servlet jsp threw exceptionThe Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location]at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:60)atorg.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:44) atponentTagSupport.doStartTag(ComponentTagSupport.java:48) at_005fstruts2_005flz.YpxxbQuery_jsp._jspx_meth_s_005fdebug_005f0(Ypxxb Query_jsp.java:108)at_005fstruts2_005flz.YpxxbQuery_jsp._jspService(YpxxbQuery_jsp.java:83)解决的办法:(4种解决方案)1.web.xml 中添加一个filter<filter-mapping><filter-name>struts2</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping><filter-mapping><filter-name>struts2</filter-name><url-pattern>/action/*</url-pattern></filter-mapping>2.<filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>注意<url-pattern>这里一定要是/*3.这通常是由于不经由Filter访问包含struts标签的jsp页面导致的。

struts2 spring hibernate整合常见问题集

struts2 spring hibernate整合常见问题集

struts2 spring hibernate整合常见问题集由于时间原因我只是写一下出现的问题和解决方法,以后有时间了我会继续增加常出现的问题和出现问题的原因,希望对初学者有一些帮助1、出现class not fond:org.springframework.web.context.ContextLoaderListener解决方法:加入完整的spring.jar2、出现struts2 :Unable to load configuration. ……struts-default.xml异常(有两种情况)解决方法:2.1 除了ognl-2.6.11.jar,struts2-core-2.1.6.jar,xwork-2.1.2.jar,commons-logging-1.0.4.jar外,还需要添加freemarker-2.3.13.jar,commons-fileupload-1.2.1.jar,commons-io-1.3.2.jar2.2 struts.xml中action配置出错,检查,可能<package name=""extends="struts-default">中未写extends="struts-default"3、nested exception is ng.NoSuchMethodError:org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Lja va/lang/String;Ljava/lang/String;)错误解决方法:将spring提供的asm-2.2.3.ja架文件删除重新启动服务器就能可以了4、出现:HTTP Status 404 - No result defined for actioncom.sr.login.LoginAction and result error解决方法:struts.xml配置文件中是否定义了名为Action返回result的<result />。

struts2常见错误总结

struts2常见错误总结

struts2常见错误总结1.Caught exception while loading file struts-default.xml - [unknown location]解决办法:由于lib包冲突造成的,将两个解析xml用的jar从项目里移到tomacat的lib下面就ok了,xml-apis.jar xerces-2.6.2.jar2.严重: Exception starting filter struts2Error building results for action login in namespace - action - file:/E:/apache-tomcat-6.0.14/webapps/testStruts2/WEB-INF /classes/struts.xml57原因:在web.xml已声明使用模板,并对所有的类进行了监听,但在处理过程中,发现不知道到哪里去找模板的配置文件,即在struts.xml中已使用了模板,但并没有告诉程序应该到哪去解析这些内容,即titles-default.java文件应该声明出来,原因1:在struts.xml中错误的声明如下:<package name="aa1" extends="struts-default" ><action name="login" class="com.sun.demo.LoginAction"><result type="tiles">showWelcomePage</result></action></package>应改为:<package name="aa1" extends="titles-default" ><action name="login" class="com.sun.demo.LoginAction"><result type="tiles">showWelcomePage</result></action>原因2:titles.xml文件的错误配置<tiles-definitions><definition name="showWelcomePage" template="template.jsp"><put-attribute name="menu" >menu_1.jsp</put-attribute><put-attribute name="content" >login_form.jsp</put-attribute></definition>正确的配置为:<tiles-definitions><definition name="showWelcomePage" template="template.jsp"><put-attribute name="menu" value="/menu_1.jsp"></put-attribute><put-attribute name="content" value="/login_form.jsp"></put-attribute></definition>页面显示情况如下:错误配置如下:<definition name="showWelcomePage" template="template.jsp"><put-attribute name="menu" value="menu_1.jsp"></put-attribute><put-attribute name="content" value="login_form.jsp"></put-attribute></definition>正确配置如下:<definition name="showWelcomePage" template="template.jsp"><put-attribute name="menu" value="/menu_1.jsp"></put-attribute><put-attribute name="content" value="/login_form.jsp"></put-attribute></definition>在value属性中,以"/"开头表示地址,如果不以“/”开头,则系统会默认为内容3.执行增加操作时,直接对对象进行操作,对象中各字段值都正确,但插入数据库后乱码解决办法(1)统一页面和数据库编码为utf-8(2)修改hibernate的配置文件,修改url属性为:jdbc:mysql:/127.0.0.1:3306/shop?useunicode=true&characterEncuoding=utf-84.could not create Query原因:sql语句书写不正确5.mysql数据库问题mysql Error 1115号错误,utf编码安装时编码采用默认的编码,安装成功后,再到安装路径下修改安装语言,修改mysql/my.ini 文件。

Stuts2的struts.properties配置文件详解

Stuts2的struts.properties配置文件详解

Struts 2框架有两个核心配置文件,struts.xml和struts.properties,其中struts.x ml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等。

除此之外,Struts 2框架还包含一个struts.properties文件,该文件定义了Struts 2框架的大量属性,开发者可以通过改变这些属性来满足应用的需求。

struts.properties文件是一个标准的Properties文件,该文件包含了系列的key-value对象,每个key就是一个Struts 2属性,该key对应的value就是一个S truts 2属性值。

struts.properties文件通常放在Web应用的WEB-INF/classes路径下。

实际上,只要将该文件放在Web应用的CLASSPATH路径下,Struts 2框架就可以加载该文件。

其实,struts.properties文件的内容均可在struts.xml中以<constant na me="" value=""></constant>加下面将该文件的配置参数详细列举出来,方便大家查看;struts.configuration该属性指定加载Struts 2配置文件的配置文件管理器。

该属性的默认值是org.apache. Struts2.config.DefaultConfiguration,这是Struts 2默认的配置文件管理器。

如果需要实现自己的配置管理器,开发者则可以实现一个实现Configuration接口的类,该类可以自己加载Struts 2配置文件。

struts.locale指定Web应用的默认Locale。

struts.i18n.encoding指定Web应用的默认编码集。

该属性对于处理中文请求参数非常有用,对于获取中文请求参数值,应该将该属性值设置为GBK或者GB2312。

struts2_异常处理

struts2_异常处理

Struts2___异常处理Struts2提供声明式的异常处理方式,内部通过配置的拦截器来实现,默认异常拦截器:com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor这样我们不需要在Action方法中catch异常,只需抛出相关的异常,都交由拦截器处理通过异常映射配置:<exception-mapping>元素exception属性:指定该异常映射所设置的异常类型result属性:指定Action出现该异常时,跳转到result属性所指向的结果异常映射类别分为两种:局部异常映射:<exception-mapping>配置<action name="exceptionAction"class="org.struts2.ch6.action.ExceptionAction"> <!-- 局部异常映射当Action 抛出指定异常时显示名为book_error指定的页面--><exception-mapping result="book_error"exception="ng.IllegalArgumentException"/><result>/ch6/book_add.jsp</result><result name="book_error">/ch6/book_error.jsp</result></action>全局异常映射:<global-exception-mappings>和<exception-mapping>配置<global-results><result name="error">/ch6/error.jsp</result></global-results><global-exception-mappings><exception-mapping result="error"exception="ng.Exception"/> </global-exception-mappings>页面输出异常信息:异常对象被封装成ExceptionHolder对象,压入ValueStack中<s:property value="exception.message"/> 输出异常对象消息<s:property value="exceptionStack"/> 输出异常堆栈信息Struts2 拦截器工作原理UML时序图:Struts2___类型转换◆内置的类型转换Stringboolean/Booleanchar/Characterint/Integer,float/Float,long/Long,double/Double date 默认时间格式为yyyy-MM-dd(当前时区的SHORT格式)数组假设每个单独的字符串都能转换成数组中元素的类型集合如果不能确定集合中元素的类型,会默认是String类型,并创建一个新的ArrayList对象◆自定义类型转换器主要方式:a.继承DefaultTypeConverter,重写convertValue方法b.继承StrutsTypeConverter,重写convertFromString和convertToString方法(推荐)public class DateTypeConverter extends StrutsTypeConverter {private String[] pattern = {"yyyy-MM-dd HH:mm:ss","yyyy/MM/dd HH:mm:ss","yyyy-MM-dd","yyyy/MM/dd"};private SimpleDateFormat sdf=new SimpleDateFormat();/*** @param context action上下文* values[] 需要转换的String数组* toClass 转换后的目标类型** @return返回转换后的目标对象*/public Object convertFromString(Map context, String[] values, Class toClass) { /** 使用指定的日期格式解析字符串值,返回Date对象*/Date date=null;if(toClass==Date.class && values.length>0){if(values[0]!=null && !"".equals(values[0])){System.out.println("接收的参数值:"+values[0]);date=parse(values[0]);if(date==null){/** 解析出现异常,抛出TypeConversionException异常,以通知Struts2发生了转换错误*/System.out.println("抛出类型转换异常,通知struts处理");throw new TypeConversionException("类型转换异常");}}System.out.println("转换后的值:"+date);return date;}return null;}public String convertToString(Map context, Object o) {/**使用指定的日期格式格式化Date对象,返回字符串*/return sdf.format(o);private Date parse(String source) {for(String fmt:pattern){Date d=convert(source,fmt);if(d!=null){return d;}}return null;}private Date convert(String source, String fmt) { try {sdf.applyPattern(fmt);Date v = sdf.parse(source);return v;}catch (ParseException e) {return null;}}自定义类型转换器的注册方式:A、局部类型转换器:针对某个ActionB、全局类型转换器:针对所有ActionC、使用JDK1.5的注释1.局部类型转换器提供如下格式的properties 文件,存放在Action类同一路径下文件名:action类名-conversion.properties内容: Action属性名=转换器全路径类名如:birthday=org.struts2.ch6.conversion.DateTypeConverter2、全局类型转换器(一般使用)提供如下格式的文件,存放位置:WEB-INF/classes/目录下文件名: xwork-conversion.properties内容:需要转换的全路径的类名=转换器全路径类名如:java.Util.Date=org.struts2.ch6.conversion.DateTypeConverter 类型转换的流程(String转对应类型)类型转换异常提示处理类型转换由conversionError拦截器处理出错返回input指向页面使用<s:fielderror/>显示错误信息##默认类型转换错误消息(一般使用) 一般定义在全局资源包文件中xwork.default.invalid.fieldvalue=this.field{0}value invalid ##局部类型转换错误消息显示(一般定义action级别资源包)invalid.fieldvalue.属性名=错误提示invalid.fieldvalue.birthday=birthday convert error!!!示例参见ch6。

Myeclipse中的提示信息不显示问题

Myeclipse中的提示信息不显示问题

Myeclipse中的提示信息不显示问题在myeclipse中写struts2的struts.xml配置文件时,没有提示功能,可以这样解决:1,打开window-preferences-myeclipse enterprise workbench-files and editors-xml-xml catalog,点add..,出现一对话框,location栏选file system,找到struts-2.0.14-all\struts-2.0.14\src\core\src\main\resources目录下的struts-2.0.dtd文件,打开,然后key type 选择uri,下面key值填 ,点击OK,这样再次打开struts.xml时应该就有提示了。

特殊的Spring配置文件的提示Location: D:\share\0900_Spring\soft\spring-framework-2.5.6\dist\resources\spring-beans-2.5.xsdURI: file:///D:/share/0900_Spring/soft/spring-framework-2.5.6/dist/resources/spring-beans-2.5.xsdKey Type: Schema LocationKey:2,当你输入元素后,如果没有属性提示,比如输入<action name="" ></action>,不能再继续提示action中的属性的话,需要做如下修改:打开window-preferences-general-keys,在右边找到content Assist这一栏,如果这一栏中binding下面有值,点击remove binding,然后在下面的binding栏,选择另一个快捷键,比如‘alt+,’,点击OK。

struts2的配置文件

struts2的配置文件
t;
<!-- 定义默认的拦截器 每个Action都会自动引用,如果Action中引用了其它的拦截器,默认的拦截器将无效 -->
<default-interceptor-ref name="mystack"></default-interceptor-ref>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
当前路径为web-inf/classes
struts2的配置文件
类型
struts2共有4类配置文件,
struts.properties:定义框架自身的全局变量。
struts-default.xml:定义框架自身使用的action映射及result定义。
struts-plugin.xml:struts插件使用的配置文件,比如当使用struts和spring结合时就需要在web.xml中引用该配置文件。
-->
<package name="com.kay.struts2" extends="struts-default" namespace="/test">
<interceptors>
<!-- 定义拦截器-->
<interceptor name="timer" class="com.kay.timer"></interceptor>

struts2例子三【Action】整理文

struts2例子三【Action】整理文

struts2例⼦三【Action】整理⽂Action 的配置是 Struts2 框架的⼀个基础⼯作单元,每⼀个 Action 的配置都有对应的处理类,当⼀个请求和 Action 的 name 相匹配时,框架将根据所配置的 Action 映射来决定对请求的处理。

1、Action 映射配置在 Action 映射中可以指定 result types 、异常处理器( exception handlers )及拦截器,但是,只有Action 的 name 属性是必需指定的,其他属性也可以在 package 范围内进⾏定义,供该 package 下配置的所有 Action 引⽤。

如:<action name="Logon" class="tutorial.Logon"><result name="input">Logon.jsp</result></action>2、Action 名称及命名注意:如果在你的 action 的 name 中包含有斜线(如: <action name="xxxxxx/xxxxxx" class="xxxxxx.xxxxx"/> ),你需要在 struts.xml 中进⾏如下配置: <constant name="struts.enable.SlashesInActionNames" value="true"/> ,但是,启⽤该配置也会产⽣⼀些副作⽤。

具体-。

-问度娘警告:谨慎使⽤在 action 名称中包含点 (er) 、斜线 (create/user) 和横线 (create-user) 的情况,虽然 action 的名称定义⾮常灵活,但是,当在 action 的 name 中使⽤点、斜线或横线时,应该谨慎。

Struts错误集

Struts错误集

Struts错误集1.没有文件文件系统会报错启动失败Missing configuration resource for path /WEB-INF/2.配置文件有语法错误,也会启动失败没有配置DTDParsing error processing resource path jndi:/localhost/demo/WEB-INF/配置了DTD但其它什么都没写Unable to initialize Struts ActionServlet due to an unexpected exception or error thrown, so marking the servlet as unavailable. Most likely, this is due to an incorrect or missing library dependency.3.如果没有一个action元素的path属性与这个请求的路径相同,就会报No action config found for the specified url.4.如果name属性没有配置,会报错: 如果没有写或者写错了会报空指针错误Form bean not specified on mapping for action: "/loginAction"5.表单没有写action属性6.如果在中没有配置input属性且验证没有通过The path of an ForwardConfig cannot be null7.如果登录成功了,但是在中没有配置登陆成功的页面,则提示如下警告: Unable to find 'welcome' forward.8.如果JSP页面中表单的name跟ActionForm中的userName属性名不一样则错误如下No getter method for property: "userName1" of bean: ""有的会报空指针错误9.如果在里配置了两个一样的action则报Overriding ActionConfig of path /login的警告,如果只是path名不同其它都一样时,则内存只会加载一次。

如何自定义Struts2表单验证后的错误信息显示格式

如何自定义Struts2表单验证后的错误信息显示格式

如何自定义Struts2表单验证后的错误信息显示格式/样式(s:fielderror,换行,黑点)前面一段时间学过一些Struts2的知识,感觉Struts2和1.x还是有很大的差别的,我还不好说1.x肯定会过时还是2.0会很快流行,这毕竟是需要作为导向的。

在Struts2中验证真的比较容易,可以在Action中直接写validate,也可以使用validate框架进行验证,这个我觉得比Struts1.x方便了很多,但是有个问题一直困扰了我,直到现在有个小程序要用到这个方面的知识,那就是验证后如何很好地人性化地在jsp 页面中显示了。

大家都知道,Struts2显示验证结果有一些方式,一般通过两种方式,介绍如下:1.在页面的上面或者某个位置全部显示错误代码:<s:fielderror cssStyle="color: red"></s:fielderror>这样会显示所有的错误信息,模拟效果如下:2.在每个字段下面或上面显示,通过<s:fielderror cssStyle="color: red"><s:param>XXX(标签的name属性,象ername)</s:param> </s:fielderror>例:用&nbsp;戶&nbsp;名:<input type="text"name="ername"/><s:fielderror cssStyle="color: red"><s:param>ername</s:param></s:fielderror>显示效果如下:上面的差不多是Struts默认显示的两种方式,但是我们常见的显示方式并不是这样的,所有我们需要自定义这种格式,我们的习惯是把错误信息显示在某个出错字段的后面,一行显示,而它给了一个小黑点并且换了行,我们现在就来解决这个问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

解决struts2配置文件无提示问题
★ 说明
我们在使用xml 文件的使用,有时候会发现我们在编写代码的时候没有提示功能;那是因为我们的文档声明部分的那个dtd 文件是网络路径,我们需要把它加载进来; 现在本人用截图的方式,把这个过程展现给大家,希望能帮到大家
如果遇到不可解决的问题,可以联系本人QQ289757464[重楼] 2012-9-23
★ 找到文档声明中DTD
文件名字
★ 在struts2下载的源文件中,取找到此struts-2.3.dtd 文件,不要找错了,记住此路径,后面要
用到;
struts-2.3.dtd
注意文件路径
找到此文件
★回到开发工具,找到"window"---"preferinces"
★打开MyEclipse-->Files and Editors-->XML-->XML Catalog
★打开"Add"添加
★选择"File System"
★选择DTD文件
★选择"uri"
★打开一个struts.xml配置文件,复制tdt的网络路径
★把复制的路径粘贴到此处;在点击"ok";
★继续点击"ok",配置完毕!---。

相关文档
最新文档