Servlet中出现的错误。(无法跳转到指定页面。)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet中出现的错误。(无法跳转到指定页面。)相关的知识,希望对你有一定的参考价值。

以下是我写的servlet小程序。 运行后,输入数据库中已存储的姓名和密码后,若成功便可跳转到welcom页面。Logincl为处理跳转页面。但是不知道为什么,输入正确用户名密码后却只跳转到Logincl页面。
望各位高手赐教,不胜感激。。
以下为程序源码。

Login.java:
//登陆界面
package cn.web;

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

public class Login extends HttpServlet
public void doGet(HttpServletRequest req,HttpServletResponse res)
try
//改写编码方式
res.setContentType("text/html;charset=gbk");
String info=req.getParameter("info");
PrintWriter pw=res.getWriter();
pw.println("<html>");
pw.println("<body>");
pw.println("<h4>欢迎您!</h4>");
pw.println("<form action=logincl method=post>");
pw.println("用户名:<input type=text name=username><br>");
pw.println("密码:<input type=password name=password><br>");
pw.println("<input type=submit value=login><br>");
pw.println("</form>");
pw.println("</body>");
pw.println("</html>");
if(info!=null)
pw.println("<h3>你的用户名或密码错误</h3>");
catch(Exception e)
e.printStackTrace();

public void doPost(HttpServletRequest req,HttpServletResponse res)
this.doGet(req,res);



Logincl.java:
//用户验证servlet
package cn.web;

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

public class Logincl extends HttpServlet
public void doGet(HttpServletRequest req,HttpServletResponse res)

Connection ct=null;
Statement sm=null;
ResultSet rs=null;

try
//req:接收用户名和密码
String u=req.getParameter("username");
String p=req.getParameter("password");

//到数据库验证
//连接数据库
Class.forName("org.gjt.mm.mysql.Driver");//括号内为驱动包

//得到连接
ct=DriverManager.getConnection
("jdbc:mysql://127.0.0.1:3306;databaseName=users","root","root");
//创建statement
sm=ct.createStatement();
rs=sm.executeQuery("select * from username where username='"+u+"'and password='"+p+"'" );//有top1可以增加查询效率 查到一个后就不会再继续往下

if(rs.next())
//得到session,开始进行验证
HttpSession hs=req.getSession(true);
//修改session存在时间,以秒算
hs.setMaxInactiveInterval(20);
//添加属性
hs.setAttribute("pass","OK");

res.sendRedirect("wel?uname='"+u+"'&upass='"+p+"'");//写要跳转到的界面的url

else
res.sendRedirect("login?info=error");

catch(Exception e)
e.printStackTrace();
finally
try
//必须按此顺序进行关闭
if(rs!=null)
rs.close();

if(sm!=null)
sm.close();
if(ct!=null)
ct.close();


catch(Exception e)
e.printStackTrace();




public void doPost(HttpServletRequest req,HttpServletResponse res)
this.doGet(req,res);




welcome.java:
package cn.web;

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

public class Welcome extends HttpServlet
public void doGet(HttpServletRequest req,HttpServletResponse res)
/*HttpSession hs=req.getSession(true);
String val=(String)hs.getAttribute("pass");
//String sessionId=hs.getId();
if(val==null)
try
res.sendRedirect("login");

catch(Exception e)
e.printStackTrace();*/

try
String u=req.getParameter("uname");
String p=req.getParameter("upass");

PrintWriter pw=res.getWriter();
pw.println("<img src=Imgs/1.gif><br>");
pw.println("Welcome!"+u+"password="+p);
//pw.println(sessionId);
//pw.println("name="+val);
catch(Exception e)
e.printStackTrace();

public void doPost(HttpServletRequest req,HttpServletResponse res)
this.doGet(req,res);

晕倒,楼主在忽悠人吧……

在我这里已经通过了,你检查下你的sql吧。
我和你唯一的区别就在于sql。

调试logincl时用的两句替代方案:
//rs=sm.executeQuery("select * from dual where 1=2");
rs=sm.executeQuery("select * from dual");

我的web.xml关键内容:
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>cn.web.Login</servlet-class>
</servlet>
<servlet>
<servlet-name>logincl</servlet-name>
<servlet-class>cn.web.Logincl</servlet-class>
</servlet>
<servlet>
<servlet-name>Welcome</servlet-name>
<servlet-class>cn.web.Welcome</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>logincl</servlet-name>
<url-pattern>/logincl</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Welcome</servlet-name>
<url-pattern>/wel</url-pattern>
</servlet-mapping>

Welcome是模仿楼主的Login写的,关键内容:
pw.println("<html>");
pw.println("<body>");
pw.println("<h4>欢迎您!"+uname+",您的密码是:"+upass+"</h4>");
pw.println("</body>");
pw.println("</html>");
参考技术A 1.web.xml配置的对不对
2.密码不能为null
参考技术B 没有返回函数,你往哪跳

以上是关于Servlet中出现的错误。(无法跳转到指定页面。)的主要内容,如果未能解决你的问题,请参考以下文章

linkbutton无法跳转到指定页面

thinkphp5无法用html表单中的action跳转到另一个页面?

在servlet中输出文件后,如何再跳转到新页面

进入页面跳转到指定锚点

js跳转到$url

eclipse中如何跳转到指定行