//这个类是登录界面
public class Login extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=gbk");
PrintWriter pw = response.getWriter();
                   //登录界面
pw.println("<html>");
pw.println("<body>");
pw.println("<h1>登陆界面</h1>");
pw.println("<form action=servlet/LoginCl method=post>");
pw.println("用户名:<input type=text name=username><br>");
pw.println("密码:<input type=password name=passwd><br>");
pw.println("<input type=submit value=loing><br>");
pw.println("</form>");
pw.println("</body>");
pw.println("</html>");
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}}
//这个类是验证界面
public class LoginCl extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String u = request.getParameter("username");
String p = request.getParameter("passwd");

if(u.equals("peipei")&& p.equals("12")){
                             //合法
response.sendRedirect("servlet/Welcome");//所填内容为url值,实现跳转功能
}else{
                            //不合法
response.sendRedirect("servlet/Login");
}

} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}}
//这个类是欢迎界面,登录成功后跳转到的界面
public class Welcome extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter pw = response.getWriter();
pw.println("Welcome");
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}}每次输入用户名和密码后,然后登录就会出错,在地址栏中出现这样的地址:
http://localhost:8080/Login/servlet/servlet/LoginCl
界面就是以下内容:
HTTP Status 404 - /Login/servlet/servlet/LoginCl--------------------------------------------------------------------------------type Status reportmessage /Login/servlet/servlet/LoginCldescription The requested resource (/Login/servlet/servlet/LoginCl) is not available.
--------------------------------------------------------------------------------Apache Tomcat/6.0.13我觉得地址栏中多了一个/servlet,导致错误提示说不存在/servlet/servlet/LoginCl.实质是LoginCl的url是servlet/LoginCl.
但是不知道为什么???也不知道自己的理解是否正确,希望有经验的人可以给我解释一下,为什么就是跳转不到下一个页面??????深感谢意!谢谢了

解决方案 »

  1.   

    既然多了个servlet
    那就把pw.println("<form action=servlet/LoginCl method=post>");
    这句里面的那个servlet给咔嚓掉
      

  2.   

    把你的WEB.XML文件对 Login.java的配置文件发出来看下
      

  3.   

    response.sendRedirect("servlet/Welcome");//所填内容为url值,实现跳转功能
    }else{
      //不合法
    response.sendRedirect("servlet/Login");
    }你是都跳不到还是只有login跳不到,把servlet去掉试试看
      

  4.   

    3楼说的删"servlet/"前缀,只留下response.sendRedirect("Welcome")和response.sendRedirect("Login")说法不错
      

  5.   

    response.sendRedirect("servlet/Welcome");//所填内容为url值,实现跳转功能
    改成 response.sendRedirect("Welcome") 看看这样是不是正确的因为开头不带斜杠是相对路径所以 就成了 /Login/servlet + /servlet/LoginCl
      

  6.   

    3楼说的删"servlet/"前缀,只留下response.sendRedirect("Welcome")和response.sendRedirect("Login")说法不错
      

  7.   

    这个是xml文件,是myeclipse自动生成的,没有改动<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <servlet>
        <description>This is the description of my J2EE component</description>
        <display-name>This is the display name of my J2EE component</display-name>
        <servlet-name>Login</servlet-name>
        <servlet-class>com.peipei.Login</servlet-class>
      </servlet>
      <servlet>
        <description>This is the description of my J2EE component</description>
        <display-name>This is the display name of my J2EE component</display-name>
        <servlet-name>LoginCl</servlet-name>
        <servlet-class>com.peipei.LoginCl</servlet-class>
      </servlet>
      <servlet>
        <description>This is the description of my J2EE component</description>
        <display-name>This is the display name of my J2EE component</display-name>
        <servlet-name>Welcome</servlet-name>
        <servlet-class>com.peipei.Welcome</servlet-class>
      </servlet>  <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <url-pattern>/servlet/Login</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>LoginCl</servlet-name>
        <url-pattern>/servlet/LoginCl</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>Welcome</servlet-name>
        <url-pattern>/servlet/Welcome</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    无论是去掉
    pw.println("<form action=LoginCl method=post>");
    或者是
    response.sendRedirect("servlet/Welcome");
    response.sendRedirect("servlet/Login");
    中的servlet/都不行。还是原来的错误,可以运行出来登录界面,但是登录时就会出现错误。不能跳转到合适的界面
    这三句中,它们的所填内容都是servlet的url,也不应该去掉servlet/.
    请问还有没有其它的可疑之处。
      

  8.   

    “servlet/”前缀不去的话,你应该用“/servlet/Welcome”这种写法。
    还有,
    你去掉“servlet/”前缀后,肯定不会再跳http://localhost:8080/Login/servlet/servlet/LoginCl了。楼主现在的错误信息是什么?
    还有,
    你顶楼的Login Servlet HTML页面出得不规范,页面中的双引号都略去了,这不太好。
      

  9.   

    你试一试 
    /servlet/Welcome