首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

工作需要,初学Struts,弄了个简单的注册例子都出毛病,郁闷死。大家有空的话帮着看看,多谢

2012-02-03 
工作需要,初学Struts,弄了个简单的注册例子都出毛病,郁闷死。大家有空的话帮着看看,谢谢!问题是:注册页面可

工作需要,初学Struts,弄了个简单的注册例子都出毛病,郁闷死。大家有空的话帮着看看,谢谢!
问题是:注册页面可以正常显示,但是点注册按钮,页面没有跳转Success.jsp或Failure.jsp页面,而是到了一个空页面。我觉得根本就没有进入到Action里执行,因为我曾在Actrion里放了一个打印语句,没有结果。以下是源码。

Action

Java code
package app;import org.apache.struts.action.*;import javax.servlet.http.*;public class RegisterAction extends Action {    public ActionForward excute(ActionMapping mapping, ActionForm form,            HttpServletRequest req, HttpServletResponse res) {        // ○1 将form 转型为RegisterForm        RegisterForm rf = (RegisterForm) form;        String username = rf.getUsername();        String password1 = rf.getPassword1();        String password2 = rf.getPassword2();        ActionForward forward = new ActionForward();        // ○2 应用业务逻辑        if (password1.equals(password2)) {                        forward = mapping.findForward("success");        } else {            forward = mapping.findForward("failure");        }        // ○4 返回针对failure的ActionForward        return (forward);    }}


ActionForm
Java code
 
package app;

import org.apache.struts.action.*;

public class RegisterForm extends ActionForm {
/**
*
*/
private static final long serialVersionUID = 7778795904157172654L;

private String password2;

private String password1;

private String username;

public String getUsername() {
return username;
}

public void setUsername(String i) {
username = i;
}

public String getPassword1() {
return password1;
}

public void setPassword1(String i) {
password1 = i;
}

public String getPassword2() {
return password2;
}

public void setPassword2(String i) {
password2 = i;
}

}


注册页面
XML code
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<HTML>
<HEAD>
<TITLE>register </TITLE>
</HEAD>
<BODY>
<P>
<html:form action="/register.do">
用户名: <html:text property="username"> </html:text>
<BR>
密码1: <html:text property="password1"> </html:text>
<BR>
密码2: <html:text property="password2"> </html:text>
<BR>
<html:submit value="Register"> </html:submit>
</html:form>
</P>
</BODY>
</HTML>


struts-config
XML code
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><struts-config>    <data-sources />    <form-beans>        <form-bean name="RegisterForm" type="app.RegisterForm">        </form-bean>    </form-beans>    <action-mappings>        <action path="/register" type="app.RegisterAction"            name="RegisterForm" scope="request" input="/register.jsp">            <forward name="success" path="/Success.jsp"></forward>            <forward name="failure" path="/Failure.jsp"></forward>        </action>    </action-mappings>    <message-resources        parameter="com.yourcompany.struts.ApplicationResources" /></struts-config> 


Success.xml
XML code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><HTML>    <HEAD>     <TITLE>aaa</TITLE>    </HEAD>    <BODY>        <P>        aaaaa        </P>        <P>            <A href="register.jsp">aaaaaaa</A>        </P>    </BODY></HTML>



[解决办法]
没看出来什么错
[解决办法]
首先确认有没有进入action!
然后查看下那个空白页的源代码!
[解决办法]
<html:form action="/register.do">
斜杠不要试试看
action=“register.do”
感觉可能你的目录结构有问题把
反正代码上我是没看出。。。
[解决办法]
在forward 这找找原因
[解决办法]
1、syso打印 确定是否进入action
2、如果进来了,检查你的struts-config.xml 配置路径是否正确。
3、如果没进来,检查页面的action路径是否有错误。
4、你的空白页是什么?什么都没有??还是..
[解决办法]
“运行后url是http://localhost:8080/register/register.do”

(1)你的应用名字是register吗,如果不是的话,在页面中应该报的是404错误,请求路径错误,
(2)这个程序要求进行form表单验证了,你把form 表单的验证方法写上,只在里面写一个输出语句,看看form有没有执行,

调用顺序是:先执行form表单的验证,如果验证通过才进入action,否则直接跳转到register.jsp。然后看你的register.jsp是否写错
(3)还有一种可能性是, <html:form action="/register.do"> 你用的struts的form标签,这写标签有的时候不起作用,建议你把它换成
<form action ="" method=""></form>
这种标准标签库的标签试一下

[解决办法]
forward = mapping.findForward("success");
这里直接用
Java code
return mapping.findForward("success");
[解决办法]
<forward name="success" path="/Success.jsp"></forward>
<forward name="failure" path="/Failure.jsp"></forward>
你看下这里的页面前面的/去掉行不行,如果确认都没错,那就把tomcat停下,
然后删除work目录下的东西,再重新启动,访问
[解决办法]
既然 运行后url是http://localhost:8080/register/register.do ,那么就证明已经进入了action,
你的配置没有错误。
但是 你出现了空白页,那只能说明你的forward有问题,按照你的配置:
<forward name="success" path="/Success.jsp"> </forward>
<forward name="failure" path="/Failure.jsp"> </forward>
也就是多,你的Success.jsp路径不对,请确定你的当前路径,你的action path="/register" 而你的页面url为:http://localhost:8080/register/register.do 也就是说你的上下文径为:http://localhost:8080/register。
你把你的jsp文件放到register文件夹下试试 或者 更改你的应用程序上下文。
[解决办法]
action="<%=request.getContextPath()%>/register.do" 试试
[解决办法]
ActionForward forward = new ActionForward();
这段代码有错,别new,直接ActionForward forward=null。就可以了。
[解决办法]
action=" <%=request.getContextPath()%>/register.do" 试试
[解决办法]
Java code
public ActionForward [color=#FF0000]excute[/color](ActionMapping mapping, ActionForm form,            HttpServletRequest req, HttpServletResponse res) 

热点排行