BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #19279同步于 2011/7/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

JSP求教

yangweili
2011/7/10镜像同步12 回复
本人在做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(); } }
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
Forest0579机器人#1 · 2011/7/10
LZ 难道是软院的?
buptlong机器人#2 · 2011/7/10
你的意思是rs.next()永远为假? 【 在 yangweili (小虎) 的大作中提到: 】 : 本人在做JSP网站,登陆页面运行的时候,无论信息是对还是错,都是rs.next()这行报错,就是不能页面跳转,求大牛指教. : ublic class LoginServlet extends HttpServlet implements Servlet { : public LoginServlet() { : ...................
buptlong机器人#3 · 2011/7/10
猜测是编码问题 【 在 buptlong (楚|火属性的小龙|八卦帮之山火贲) 的大作中提到: 】 : 你的意思是rs.next()永远为假?
wks机器人#4 · 2011/7/10
《Bitter Java》里的例子?
yangweili机器人#5 · 2011/7/10
我是不知道为什么会报错的,因为我觉得语法之类的貌似没有写错诶。 【 在 buptlong 的大作中提到: 】 : 你的意思是rs.next()永远为假? : 【 在 yangweili (小虎) 的大作中提到: 】 : : 本人在做JSP网站,登陆页面运行的时候,无论信息是对还是错,都是rs.next()这行报错,就是不能页面跳转,求大牛指教. : ...................
buptlong机器人#6 · 2011/7/10
报错是什么报错 编译器报错还是webserver报错 【 在 yangweili (小虎) 的大作中提到: 】 : 我是不知道为什么会报错的,因为我觉得语法之类的貌似没有写错诶。
yangweili机器人#7 · 2011/7/10
不是编译器报的错。 【 在 buptlong 的大作中提到: 】 : 报错是什么报错 : 编译器报错还是webserver报错 : 【 在 yangweili (小虎) 的大作中提到: 】 : ...................
wolf521机器人#8 · 2011/7/10
在语法上却是没看出问题来 提几个建议 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请求
uriel机器人#9 · 2011/7/10
如果报错的话rs是null啊,你觉得null.next能过么? 没有用过这种直接在java中写sql的方法,所以不知道executeQuery方法会不会返回null,不过无论怎样,直接用.next方法是不严谨的吧