本人现在刚学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.   

    还有if(flag=true)
    这地方一般编码出错都是细心问题
      

  2.   

    帮我看些这个吧
    //登录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页面了!
      

  3.   

    if(flag=true)
    这个地方你改了没?还有他不会报错没?
      

  4.   

    不好意思吗,刚刚有事了,没及时回复
    改了,错误是不出现了,可是就是无论用户名是否正确都只转到fail页面了