问题描述: 创建pojo类User(uname,pwd),使用JDBC读Mysql数据库中数据,并返回User对象时,当uname为中文时,User为null,修改为英文后,正常获得User对象
代码:pojo/User
public class User {
private int uid;
private String uname;
private String pwd;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((pwd == null) ? 0 : pwd.hashCode());
result = prime * result + uid;
result = prime * result + ((uname == null) ? 0 : uname.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (pwd == null) {
if (other.pwd != null)
return false;
} else if (!pwd.equals(other.pwd))
return false;
if (uid != other.uid)
return false;
if (uname == null) {
if (other.uname != null)
return false;
} else if (!uname.equals(other.uname))
return false;
return true;
}
@Override
public String toString() {
return "User [uid=" + uid + ", uname=" + uname + ", pwd=" + pwd + "]";
}
public User() {
super();
}
public User(int uid, String uname, String pwd) {
super();
this.uid = uid;
this.uname = uname;
this.pwd = pwd;
}
}
代码:dao/LoginDao
public interface LoginDao {
User checkLoginDao(String uname,String pwd);
}
代码:dao/impl/LoginDaoImpl
public class LoginDaoImpl implements LoginDao{
@Override
public User checkLoginDao(String uname, String pwd) {
//声明Jdbc对象
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
//声明数据存储对象
User u=null;
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//获取连接对象
conn=DriverManager.getConnection("jdbc:mysql://localhost:3366/407","root","1234");//此处密码为自己数据库的密码
//创建Sql命令
String sql="select * from t_user where uname=? and pwd=?";
//创建Sql命令对象
ps=conn.prepareStatement(sql);
//给占位符赋值
ps.setString(1, uname);
ps.setString(2, pwd);
//执行
rs=ps.executeQuery();
//遍历执行结果
while(rs.next()){
u=new User();
u.setUid(rs.getInt("uid"));
u.setUname(rs.getString("uname"));
u.setPwd(rs.getString("pwd"));
}
//关闭资源
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//返回
return u;
}
}
代码:service/LoginService
public interface LoginService {
User checkLoginService(String uname,String pwd);
}
代码:service/impl/LoginServiceImpl
public class LoginServiceImpl implements LoginService{
//创建Dao层过度向
LoginDao ld = new LoginDaoImpl();
@Override
public User checkLoginService(String uname, String pwd) {
return ld.checkLoginDao(uname, pwd);
}
}
代码:servlet/LoginServlet
@WebServlet({ "/LoginServlet", "/login" })//此处也可在xml文件中配置,若已在xml文件中配置,添加此行会导致tomcat启动失败
public class LoginServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置响应编码格式
resp.setContentType("text/html;charset = utf-8");
//获取请求信息
String uname = req.getParameter("uname");
String pwd = req.getParameter("pwd");
//处理请求信息
//获取业务层对象
LoginService ls = new LoginServiceImpl();
User u = ls.checkLoginService(uname, pwd);
System.out.println(u);
//响应处理结果
}
}
代码:servlet/PageServlet
public class PageServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
//获取请求信息
//处理请求
//响应处理结果
resp.getWriter().write("<html>");
resp.getWriter().write("<head>");
resp.getWriter().write("</head>");
resp.getWriter().write("<body>");
resp.getWriter().write("<form action = 'login' method = 'get'>");
resp.getWriter().write("用户名: <input type = 'text' name='uname' value = ''/><br/>");
resp.getWriter().write("密码: <input type = 'password' name = 'pwd' value = ''/><br/>");
resp.getWriter().write("<input type = 'submit' value = '登陆'/><br/>");
resp.getWriter().write("</form>");
resp.getWriter().write("</body>");
resp.getWriter().write("</html>");
}
}