jsp跳转到servlet找路径问题!

QQ123789456 2009-12-11 09:58:25
我用的是myeclipse新建一个项目生成的文件夹位置大家应该都知道的!下面我就贴一下我的代码和web.xml!希望大家踊跃指出错误啊!
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>lc.user.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/design_web/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


login.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登录页面</title>


</head>

<body>
<center>
<form action="design_web/login" method="post">
<table>
<tr>
<td colspan="2">用户登陆</td>
</tr>
<tr>
<td>用户名:</td>
<td><input type="text" name="uname" size="20"></td>
</tr>
<tr>
<td>密  码:</td>
<td><input type="password" name="pwd" size="20"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="登陆">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>


LoginServlet.java:

package lc.user;

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;

import lc.web.*;
public class LoginServlet extends HttpServlet {

public LoginServlet() {
// TODO Auto-generated con;structor stub
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
{
this.doPost(request, response);
System.out.println("执行doget操作。。。。。。。。。。。");
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
{
System.out.println("执行dopost操作。。。。。。。。。。。");
String path="login.html";
String name=request.getParameter("uname");
String pwd =request.getParameter("pwd");
User user=new User();
user.setUname(name);
user.setPwd(pwd);
Login login=new Login();
try
{
if(login.isValidUser(user))
{
// HttpServletRequest req=(HttpServletRequest)request;
// HttpSession session=req.getSession();
request.getSession().setAttribute("uname",user.getUname());
path="success.jsp";
}
else
{
request.setAttribute("error","错误的用户和密码");
}
}
catch(Exception e)
{
e.printStackTrace();
}
request.getRequestDispatcher(path).forward(request,response);
}

}

在线等待解决方案,先谢过了啊!

...全文
2183 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
super_hkf 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 qq123789456 的回复:]

引用 14 楼 kgd1120 的回复:
引用 4 楼 qq123789456 的回复:
引用 3 楼 kgd1120 的回复:
应该把完整的错误信息贴出来,说出你出现的问题

他一直死循环at lc.user.LoginServlet.doPost(LoginServlet.java:46)
at javax.servlet.http.HttpServlet.service(Htt……
[/Quote]如果是一个页面一定要转发给自己,而又不造成死循环,应该怎么改?
QQ123789456 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 kgd1120 的回复:]
引用 4 楼 qq123789456 的回复:
引用 3 楼 kgd1120 的回复:
应该把完整的错误信息贴出来,说出你出现的问题

他一直死循环at lc.user.LoginServlet.doPost(LoginServlet.java:46)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:687)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)这一段啊!


知道你的问题出在哪里了
<servlet-mapping>
    <servlet-name>login </servlet-name>
    <url-pattern>/design_web/* </url-pattern>
</servlet-mapping>

因为你的servlet映射路径是/design_web/* ,也就是design_web路径下的所有请求都会请求你的LoginServlet,
跳转时:request.getRequestDispatcher(path).forward(request,response); 因为你当前的请求路径是design_web下面,即就是请求design_web\success.jsp,而你配置的 <url-pattern>/design_web/* </url-pattern> 把design_web\success.jsp拦截,又执行LoginServlet,这样就会导致死循环。

解决办法:
<servlet-mapping>
    <servlet-name>login </servlet-name>
    <url-pattern>/design_web/login </url-pattern>
</servlet-mapping>

[/Quote]
这样是不会死循环了!谢了!但是新的问题来了,你说我这个路径写的对吗??跳不过去啊!就是进不去LoginServlet里面啊~!这是为什么啊??action的地址会有问题吗??
女女321 2009-12-12
  • 打赏
  • 举报
回复
解决啦?那我不用解决了@@
jslygldq 2009-12-12
  • 打赏
  • 举报
回复
顶一下!楼上的解决方案好像是对的
kgd1120 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qq123789456 的回复:]
引用 3 楼 kgd1120 的回复:
应该把完整的错误信息贴出来,说出你出现的问题

他一直死循环at lc.user.LoginServlet.doPost(LoginServlet.java:46)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:687)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)这一段啊!
[/Quote]

知道你的问题出在哪里了
<servlet-mapping>
<servlet-name>login </servlet-name>
<url-pattern>/design_web/* </url-pattern>
</servlet-mapping>

因为你的servlet映射路径是/design_web/* ,也就是design_web路径下的所有请求都会请求你的LoginServlet,
跳转时:request.getRequestDispatcher(path).forward(request,response); 因为你当前的请求路径是design_web下面,即就是请求design_web\success.jsp,而你配置的<url-pattern>/design_web/* </url-pattern> 把design_web\success.jsp拦截,又执行LoginServlet,这样就会导致死循环。

解决办法:
<servlet-mapping>
<servlet-name>login </servlet-name>
<url-pattern>/design_web/login </url-pattern>
</servlet-mapping>
fix_huang 2009-12-12
  • 打赏
  • 举报
回复
说实话,我看的还真不太明白,如果只是一个servlet路径的跳转问题,会有这么麻烦吗,怎么描述了半天我硬是没有明白,看来是我的理解能力不行了
aodi307 2009-12-12
  • 打赏
  • 举报
回复
顶一个!
zhujia130 2009-12-12
  • 打赏
  • 举报
回复
如果再错了把 <url-pattern>/design_web/* </url-pattern> 改成
<url-pattern>/login/ </url-pattern>

<form action="design_web/login" method="post">
改成
<form action="login" method="post">
在看看能不能跳到servlet里面去
kgd1120 2009-12-12
  • 打赏
  • 举报
回复
我想LoginServlet应该是执行,问题是request.getRequestDispatcher(path).forward(request,response);跳转时出错了。因为当前路径变成了design_web目录,在design_web目录下面找不到success.jsp,就会出现404错误。

两种解决方案:
1.<servlet-mapping>
<servlet-name>login </servlet-name>
<url-pattern>/login </url-pattern>
</servlet-mapping>

2.request.getRequestDispatcher("../success.jsp").forward(request,response);

如果有问题,应该把错误停息贴出来。5
yifine1987 2009-12-11
  • 打赏
  • 举报
回复
你的web.xml配置正确与否 ?仔细检查下 很肯能是这个问题
LC3TWZ 2009-12-11
  • 打赏
  • 举报
回复
你只贴了栈信息 跳转路径看你的报错应该没有问题
QQ123789456 2009-12-11
  • 打赏
  • 举报
回复
我在补充一点啊!我想知道action跳转的地址对不对啊??谢了先!
QQ123789456 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wak527 的回复:]
你问的是什么问题呀,首先把问题说清楚呀
[/Quote]简单点就是action跳转的地址对不对啊???
wak527 2009-12-11
  • 打赏
  • 举报
回复
你问的是什么问题呀,首先把问题说清楚呀
QQ123789456 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhj92lxs 的回复:]
LoginServlet.java:46
这行是什么,我可不是神仙啊
[/Quote]
你们咋都喜欢只看栈内容啊!不可以从头开始吗????
zhj92lxs 2009-12-11
  • 打赏
  • 举报
回复
LoginServlet.java:46
这行是什么,我可不是神仙啊
QQ123789456 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lc3twz 的回复:]
错误代码贴上来 不要只贴栈信息。。。看不出来的
[/Quote]你仔细看了没啊??啥,我把所有相关的代码不是贴在上面了吗??
LC3TWZ 2009-12-11
  • 打赏
  • 举报
回复
错误代码贴上来 不要只贴栈信息。。。看不出来的
QQ123789456 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kgd1120 的回复:]
应该把完整的错误信息贴出来,说出你出现的问题
[/Quote]
他一直死循环at lc.user.LoginServlet.doPost(LoginServlet.java:46)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:687)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)这一段啊!
kgd1120 2009-12-11
  • 打赏
  • 举报
回复
应该把完整的错误信息贴出来,说出你出现的问题
加载更多回复(2)

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧