返回信息流本人在做JSP网站,登陆页面运行的时候,无论信息是对还是错,都是rs.next()这行报错,就是不能页面跳转,求大牛指教.
ublic class LoginServlet extends HttpServlet implements Servlet {
public LoginServlet() {
// TODO Auto-generated constructor stub
}
/*
* (non-Javadoc)
*
* @see
* javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest
* , javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
}
/*
* (non-Javadoc)
*
* @see
* javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest
* , javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
String result = "";
// 获取用户名
String sUserName = request.getParameter("username");
// 获取密码
String sPasswd = request.getParameter("password");
// 登记JDBC驱动程序
try {
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("InstantiationException");
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("IllegalAccessException");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("ClassNotFoundException");
}
// 连接参数与Access不同
String url = "jdbc:mysql://localhost:3306/javaweb";
// 建立连接
java.sql.Connection connection = null;
Statement stmt = null;
ResultSet rs = null;
try {
connection = DriverManager.getConnection(url, "root", "123456");
stmt = connection.createStatement();
// SQL语句
String sql = "SELECT * FROM user where username='" + sUserName
+ "' and password = '" + sPasswd + "'";
rs = stmt.executeQuery(sql);// 返回查询结果
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (rs.next())// 如果记录集非空,表明有匹配的用户名和密码,登陆成功
{
// 登录成功后将sUserName设置为session变量的UserName
// 这样在后面就可以通过 session.getAttribute("UserName") 来获取用户名,
// 同时这样还可以作为用户登录与否的判断依据
request.getSession().setAttribute("UserName", sUserName);
// 权限登陆,flag变量在某些权限管理功能的时候用以判断。
request.getSession().setAttribute("flag", "rs.getString(4)");
response.sendRedirect("LoginSuccess.jsp");
} else {
// 否则登录失败
response.sendRedirect("LoginFailure.jsp");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (null != rs) {
rs.close();
}
if (null != stmt) {
stmt.close();
}
if (null != connection) {
connection.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是一条镜像帖。来源:北邮人论坛 / java / #19279同步于 2011/7/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
JSP求教
yangweili
2011/7/10镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
你的意思是rs.next()永远为假?
【 在 yangweili (小虎) 的大作中提到: 】
: 本人在做JSP网站,登陆页面运行的时候,无论信息是对还是错,都是rs.next()这行报错,就是不能页面跳转,求大牛指教.
: ublic class LoginServlet extends HttpServlet implements Servlet {
: public LoginServlet() {
: ...................
我是不知道为什么会报错的,因为我觉得语法之类的貌似没有写错诶。
【 在 buptlong 的大作中提到: 】
: 你的意思是rs.next()永远为假?
: 【 在 yangweili (小虎) 的大作中提到: 】
: : 本人在做JSP网站,登陆页面运行的时候,无论信息是对还是错,都是rs.next()这行报错,就是不能页面跳转,求大牛指教.
: ...................
报错是什么报错
编译器报错还是webserver报错
【 在 yangweili (小虎) 的大作中提到: 】
: 我是不知道为什么会报错的,因为我觉得语法之类的貌似没有写错诶。
不是编译器报的错。
【 在 buptlong 的大作中提到: 】
: 报错是什么报错
: 编译器报错还是webserver报错
: 【 在 yangweili (小虎) 的大作中提到: 】
: ...................
在语法上却是没看出问题来
提几个建议
1.jdbc连数据库一定要用PreparedStatement,直接把表单内容拼进sql很不安全啊
2.为啥要用那么多try catch?个人认为没必要
3. request.getSession().setAttribute("flag", "rs.getString(4)");
"rs.getString(4)"为啥要加引号?
4.页面跳转可以用forward方式,少一次http请求
5.可以在doGet方法里调用doPost,这样可以同时处理get和post请求
如果报错的话rs是null啊,你觉得null.next能过么?
没有用过这种直接在java中写sql的方法,所以不知道executeQuery方法会不会返回null,不过无论怎样,直接用.next方法是不严谨的吧