本人现在刚学Java web开发,在弄基于model2用户注册登陆的时候与到一个问题,注册已经能实现,但是当登陆出发login.action的时候只能显示login.action中登陆失败的页面(不管我输入的用户名和密码数据库中是否存在)我不知道问题出在哪里,请各位帮忙看一下
视图层(省略)
模型层
1.JDBCBean.java 代码如下
package jdbc;
import java.sql.*;
public class JDBCBean { private String driverStr = "com.mysql.jdbc.Driver";
private String connStr = "jdbc:mysql://localhost:3306/ch09?user=root&password=root&useUnicode=true&characterEncoding=gbk";
private Connection connection = null;
private Statement stmt=null;
private ResultSet rs = null; public JDBCBean() {
try {
Class.forName(driverStr);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
private Connection getConnection(){
try {
connection=DriverManager.getConnection(connStr);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
} private Statement createStatement(){
try {
stmt=getConnection().createStatement();
} catch (Exception e) {
e.printStackTrace();
}
return stmt;
}
public ResultSet executeQuery(String sql) {
try {
rs = createStatement().executeQuery(sql);
} catch (Exception e) {
e.printStackTrace();
}
return rs;
} public int executeUpdate(String sql) {
int result = 0;
try {
result = createStatement().executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public void close(){
try {
if (rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (connection != null)
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}}2.UserInfo.java 代码如下
package userInfo;
import jdbc.JDBCBean;
import java.sql.*;
import java.util.ArrayList;
public class UserInfo { private String username="";
private String password="";
private String nickname="";
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
//检查用户名是否存在的方法
public boolean checkName(){
boolean exist=false;
String sql="select * from user where username='"+username+"'";
JDBCBean jdbc=new JDBCBean();
ResultSet rs=jdbc.executeQuery(sql);
try {
if(rs!=null && rs.next())
exist=true;
} catch (SQLException e) {
e.printStackTrace();
}
jdbc.close();
return exist;
}
//将注册用户信息添加到数据库的方法
public int registerUser(){
String sql="insert into user values(null,'"+username+"','"+password+"','"+nickname+"')";
JDBCBean jdbc=new JDBCBean();
int result=jdbc.executeUpdate(sql);
jdbc.close();
return result;
}
//用户登录的方法
public boolean login(String username,String password)
{ boolean flag=false;
String sql="select * from user where username='"+username+"'and paaword='"+password+"'";
JDBCBean jdbc=new JDBCBean();
ResultSet rs=jdbc.executeQuery(sql);
try {
if(rs!=null && rs.next())
flag=true;
} catch (SQLException e) {
e.printStackTrace();
}
jdbc.close();
return flag;
}
}控制器层(UserInfoController.java)代码如下
package servlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import userInfo.UserInfo;
import java.util.ArrayList;
public class UserInfoController extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request,response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { request.setCharacterEncoding("GBK");
String actionUrl=request.getServletPath();
if(actionUrl.equals("/register.action")){
//获取参数
String username=request.getParameter("username");
String password=request.getParameter("password");
String nickname=request.getParameter("nickname");
//设置JavaBean属性
UserInfo ui=new UserInfo();
ui.setUsername(username);
//调用相应业务方法,根据返回值选择合适的视图层响应用户
if(ui.checkName()){
request.getRequestDispatcher("/userExist.html").forward(request, response);
}else{
ui.setPassword(password);
ui.setNickname(nickname);
int result=ui.registerUser();
if(result==1)
request.getRequestDispatcher("/regSuccess.html").forward(request, response);
else
request.getRequestDispatcher("/regFailure.html").forward(request, response);
}
}else if(actionUrl.equals("/checkName.action")){
String username=request.getParameter("username");
UserInfo ui=new UserInfo();
ui.setUsername(username);
boolean exist=ui.checkName();
if(exist)
request.getRequestDispatcher("/userExist.html").forward(request, response);
else
request.getRequestDispatcher("/userNoExist.html").forward(request, response);
//登录action
}else if(actionUrl.equals("/login.action")){
//获取参数
String username=request.getParameter("username");
String password=request.getParameter("password");
//设置JavaBean属性
UserInfo ui=new UserInfo();
ui.setUsername(username);
ui.setPassword(password);
boolean flag=ui.login(username,password);
if(flag=true)
{
request.getSession(true).setAttribute("username", ui.getUsername());
request.getRequestDispatcher("/logSuccess.jsp").forward(request,response);
}
else
{
request.setAttribute("err","错误的用户账户及密码!!!") ;
request.getRequestDispatcher("/logFailure.html").forward(request,response);
}
}
}
}
我在这先谢谢了!
视图层(省略)
模型层
1.JDBCBean.java 代码如下
package jdbc;
import java.sql.*;
public class JDBCBean { private String driverStr = "com.mysql.jdbc.Driver";
private String connStr = "jdbc:mysql://localhost:3306/ch09?user=root&password=root&useUnicode=true&characterEncoding=gbk";
private Connection connection = null;
private Statement stmt=null;
private ResultSet rs = null; public JDBCBean() {
try {
Class.forName(driverStr);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
private Connection getConnection(){
try {
connection=DriverManager.getConnection(connStr);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
} private Statement createStatement(){
try {
stmt=getConnection().createStatement();
} catch (Exception e) {
e.printStackTrace();
}
return stmt;
}
public ResultSet executeQuery(String sql) {
try {
rs = createStatement().executeQuery(sql);
} catch (Exception e) {
e.printStackTrace();
}
return rs;
} public int executeUpdate(String sql) {
int result = 0;
try {
result = createStatement().executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public void close(){
try {
if (rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (connection != null)
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}}2.UserInfo.java 代码如下
package userInfo;
import jdbc.JDBCBean;
import java.sql.*;
import java.util.ArrayList;
public class UserInfo { private String username="";
private String password="";
private String nickname="";
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
//检查用户名是否存在的方法
public boolean checkName(){
boolean exist=false;
String sql="select * from user where username='"+username+"'";
JDBCBean jdbc=new JDBCBean();
ResultSet rs=jdbc.executeQuery(sql);
try {
if(rs!=null && rs.next())
exist=true;
} catch (SQLException e) {
e.printStackTrace();
}
jdbc.close();
return exist;
}
//将注册用户信息添加到数据库的方法
public int registerUser(){
String sql="insert into user values(null,'"+username+"','"+password+"','"+nickname+"')";
JDBCBean jdbc=new JDBCBean();
int result=jdbc.executeUpdate(sql);
jdbc.close();
return result;
}
//用户登录的方法
public boolean login(String username,String password)
{ boolean flag=false;
String sql="select * from user where username='"+username+"'and paaword='"+password+"'";
JDBCBean jdbc=new JDBCBean();
ResultSet rs=jdbc.executeQuery(sql);
try {
if(rs!=null && rs.next())
flag=true;
} catch (SQLException e) {
e.printStackTrace();
}
jdbc.close();
return flag;
}
}控制器层(UserInfoController.java)代码如下
package servlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import userInfo.UserInfo;
import java.util.ArrayList;
public class UserInfoController extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request,response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { request.setCharacterEncoding("GBK");
String actionUrl=request.getServletPath();
if(actionUrl.equals("/register.action")){
//获取参数
String username=request.getParameter("username");
String password=request.getParameter("password");
String nickname=request.getParameter("nickname");
//设置JavaBean属性
UserInfo ui=new UserInfo();
ui.setUsername(username);
//调用相应业务方法,根据返回值选择合适的视图层响应用户
if(ui.checkName()){
request.getRequestDispatcher("/userExist.html").forward(request, response);
}else{
ui.setPassword(password);
ui.setNickname(nickname);
int result=ui.registerUser();
if(result==1)
request.getRequestDispatcher("/regSuccess.html").forward(request, response);
else
request.getRequestDispatcher("/regFailure.html").forward(request, response);
}
}else if(actionUrl.equals("/checkName.action")){
String username=request.getParameter("username");
UserInfo ui=new UserInfo();
ui.setUsername(username);
boolean exist=ui.checkName();
if(exist)
request.getRequestDispatcher("/userExist.html").forward(request, response);
else
request.getRequestDispatcher("/userNoExist.html").forward(request, response);
//登录action
}else if(actionUrl.equals("/login.action")){
//获取参数
String username=request.getParameter("username");
String password=request.getParameter("password");
//设置JavaBean属性
UserInfo ui=new UserInfo();
ui.setUsername(username);
ui.setPassword(password);
boolean flag=ui.login(username,password);
if(flag=true)
{
request.getSession(true).setAttribute("username", ui.getUsername());
request.getRequestDispatcher("/logSuccess.jsp").forward(request,response);
}
else
{
request.setAttribute("err","错误的用户账户及密码!!!") ;
request.getRequestDispatcher("/logFailure.html").forward(request,response);
}
}
}
}
我在这先谢谢了!
这地方一般编码出错都是细心问题
//登录action
}else if(actionUrl.equals("/login.action")){
//获取参数
String username=request.getParameter("username");
String password=request.getParameter("password");
//设置JavaBean属性
UserInfo ui=new UserInfo();
ui.setUsername(username);
ui.setPassword(password);
boolean flag=ui.login(username,password);
if(flag=true)
{
request.getSession(true).setAttribute("username", ui.getUsername());
request.getRequestDispatcher("/logSuccess.jsp").forward(request,response);
}
else
{
request.setAttribute("err","错误的用户账户及密码!!!") ;
request.getRequestDispatcher("/logFailure.html").forward(request,response);
}
}
}
}
前面的应该没有问题,问题应该就处在这里,现在无论用户名是否正确都只转到fail页面了!
这个地方你改了没?还有他不会报错没?
改了,错误是不出现了,可是就是无论用户名是否正确都只转到fail页面了