昨天弄了个简单的注册,出现一个小问题,今天记录下来,下次再出现也好查找。
这个工程基于Struts2+Spring+Hibernate,问题如下:
1. 注册页面直接访问/user/regist.jsp,出现异常org.apache.jasper.JasperException:
org.apache.jasper.JasperException: The 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.
提示很清楚,使用struts2标签没有使用相关的过滤器(^_^就是struts2的过滤器了)。web.xml配置Struts2的处理器可以处理.jsp的请求。配置方法就不多说了。
2.再次访问jsp,后台有struts日志打印出的警告信息No configuration found for the specified action:
No configuration found for the specified action: 'regist.do' in namespace: '/user'. Form action defaulting to 'action' attribute's literal value.
在命名空间/user下找不到regist.do。先贴出这段配置:
regist.jsp中form配置
<s:form action="regist.do" theme="simple" onsubmit="return checkRegist()">
...
</s:form>
struts2中action配置
<package name="user" namespace="/user" extends="struts-default">
<action name="regist" method="regist" class="userAction">
<result name="input">/user/regist.jsp</result>
<result name="success">/result/message.jsp</result>
</action>
</package>
实际上是有配置regist这个action的,为什么找不到呢??
注意,是提示regist.do找不到,因为.do这个action确实是没有。struts标签会自动帮我们补全action的路径,并且加上struts2处理的结尾字符串(如".action"或".do"),所以去掉action中的结尾".do"。
再次请求jsp,OK!
3. 蛋疼的问题:一次验证失败后一直返回input配置的页面
action的regist方法
public String regist(){
if(!userDao.isUserExist(user)){
System.out.println("...注册用户:"+user);
userDao.save(user);
return SUCCESS;
}else{
System.out.println("用户已经存在:"+user);
addFieldError("user.userName", getText("form.userNameExist"));
//用户名已存在
return INPUT;
}
}
当注册同一个用户失败后,再次提交,发现总是返回配置的input页面,而且后台根本就没打印2种情况下应该打印的字符串,这是神马情况??
今天回来或立马开始查找问题原因:
首先,没有使用验证框架或者action中重写验证方法,那就不会是验证失败返回了!
偶然在网上看到一篇,情况一样,也有使用addFieldError()类似的方法,有网友回帖说要清了errors,为什么呢?虽然没有更多的说明,不过也提示了我。
因为spring给你的bean默认是singleton的,第一次出错了,再返回来的时候,发现仍然有errors,struts2于是就不假思索的直接返回给你input配置的页面了,然后呢就是不管你怎么弄都是返回input的页面。
配置action的scope为prototype。第一次注册重复的,再多次注册不同的全部OK!解决问题。
分享到:
相关推荐
总结起来,Struts2的页面跳转是通过Action类的方法返回结果代码,结合struts.xml配置文件中的结果配置来实现的。这种机制使得页面跳转变得简单而灵活,同时也方便了业务逻辑和视图的分离,是Struts2框架的一大特点。...
在MyEclipse中,你可以创建一个Struts2项目,导入所需的依赖库,然后按照上述步骤配置Action、配置文件和前端页面。在测试过程中,记得设置好服务器的临时目录,以便Struts2可以临时存储上传的文件。 总的来说,这...
每个Action执行后,会返回一个结果代码,这个代码对应一个配置在struts.xml配置文件中的结果页面。例如,`AddAction`成功执行后,可能返回一个"success"的结果,这会重定向到显示添加成功信息的页面。 Struts2的...
在Struts2的配置文件(struts.xml)中,你需要定义Action的配置,包括Action类名、方法名、结果页面等,这样Struts2才能正确地处理用户的请求和响应。 最后,别忘了在web.xml中配置Struts2的前端控制器...
Struts2配置文件(struts.xml)会定义这些结果代码对应的视图页面,比如,"success"可以对应登录成功的页面,"error"则对应登录失败的提示页面。 接着,展示登录信息和登录名。登录成功后,我们通常会将用户信息...
在Struts2中,这通常通过表单实现,表单包含一个`<input type="file">`元素,用户可以选择本地文件。Struts2的Action类会接收这个文件,并使用`Commons FileUpload`库来处理文件内容。这个库处理文件分割、内存限制...
为了实现页面跳转,我们需要在Struts2的配置文件(struts.xml)中定义Action的配置。在这里,我们需要指定Action的类名、方法名以及对应的Result。例如: ```xml <result name="success">/success.jsp ...
Struts2会根据返回值决定跳转到哪个页面。 接下来,配置Struts2的配置文件`struts.xml`,它指定了Action类与URL的映射,以及Action的执行结果。 ```xml <struts> ...
在处理完文件后,返回相应的结果名称(如"success"或"input"),Struts2会根据结果名称跳转到相应的JSP页面。 在成功页面(如success.jsp)中,可以显示文件上传的结果,比如文件名、大小等信息。 在处理文件上传...
"Struts2文件上传带进度条页面无刷新"的实现涉及多个技术点,包括Struts2的文件上传插件、AJAX异步通信以及前端进度条展示。 首先,Struts2的文件上传依赖于`struts2-upload-plugin`。这个插件扩展了Struts2的核心...
4. **配置Struts2配置文件**:在struts.xml文件中,为`UserLoginAction`定义一个Action配置,包括结果类型和对应的视图页面。比如: ```xml <result name="success">/success.jsp <result name="input">/login....
Struts2会根据返回的结果名来决定跳转到哪个页面。 7. **结果页面**: 成功页面(success.jsp)和错误页面(error.jsp)将显示相应的信息,提示用户登录状态。 通过以上步骤,我们就可以实现一个基本的Struts2...
1. `struts.xml`:这是Struts2的核心配置文件,用于定义Action、结果页面、拦截器等。例如,我们可以配置一个登录Action如下: ```xml <package name="default" namespace="/" extends="struts-default"> ...
在Struts2中,开发者可以利用Action类来处理用户的请求,这些Action类封装了业务逻辑,并且能够返回一个字符串类型的结果,该结果名称与struts.xml文件中定义的result相对应。struts.xml是一个配置文件,用于定义...
对于登录,可能会有成功和失败两种结果,分别跳转到不同的页面,如`success`跳转到欢迎页,`input`表示验证失败,返回登录页面。 6. **Session管理**: 登录成功后,通常会将用户信息保存在Session中,以便在后续...
- Struts2的必要jar包:如struts2-core、struts2-convention、struts2-json-plugin等,用于构建和运行Struts2应用。 - 自定义拦截器的Java源代码:实现了文件上传进度计算的逻辑。 - 示例Action的Java源代码:处理...
总的来说,使用Struts2上传图片并显示缩略图涉及多个步骤:配置Struts2 Action,处理文件上传,生成缩略图,以及在页面上展示图片。这个过程需要对Struts2框架、文件I/O、图片处理以及Web安全有深入理解。通过实践,...
在Struts2项目中,我们通常需要一个`struts.xml`配置文件,这是框架的核心配置文件,用来定义Action类、结果页面和拦截器。在这个小例子中,可能有如下配置: ```xml ...