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中出现的错误。(无法跳转到指定页面。)的主要内容,如果未能解决你的问题,请参考以下文章