packagecom.zhixi.zhang;importjava.io.IOException;importjava.io.PrintWriter;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjavax.servlet.ServletException;importjavax.servlet.http.Cookie;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;public class LoginServlet extendsHttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {/**思路:
获取用户名和密码
JDBC连接数据库验证用户名和密码
登录成功跳转到成功页面
登录成功后查看用户是否勾选了十天内免登陆
检查cookie,验证十天内有没有更改过密码,然后直接跳转到成功页面
登录失败跳转到失败页面*/
//1、解决乱码
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");//2、获取用户输入的用户名和密码
PrintWriter out =response.getWriter();
String username= request.getParameter("username");
String password= request.getParameter("password");
Connection conn=null;
PreparedStatement ps= null;
ResultSet rs= null;boolean login = false;//判断是否登录成功
String realName = null;//用户
try{
Class.forName("com.mysql.jdbc.Driver");
conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/donglijiedian","root","zhixi158");
String sql= "select * from t_user where username=? and password=?";
ps=conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
rs=ps.executeQuery();if(rs.next()) {
login= true;
realName= rs.getString("realname");
}
}catch(Exception e) {
e.printStackTrace();
}finally{if(rs != null) {try{
rs.close();
}catch(SQLException e) {//TODO 自动生成的 catch 块
e.printStackTrace();
}
}if(ps != null) {try{
ps.close();
}catch(SQLException e) {//TODO 自动生成的 catch 块
e.printStackTrace();
}
}if(conn != null) {try{
conn.close();
}catch(SQLException e) {//TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}//跳转页面
if(login) {//登录成功
out.print("欢迎"+ realName +"登录成功!");//通过name获取value
String parameter = request.getParameter("tenDayLogin");if("ok".equals(parameter)) {//说明用户选择了十天内免登陆//创建Cookie对象
Cookie cookie1 = new Cookie("username",username);
Cookie cookie2= new Cookie("password",password);//设置有效时间
cookie1.setMaxAge(60 * 60 * 24 * 10);
cookie2.setMaxAge(60 * 60 * 24 * 10);//设置关联路径,默认根路径就行
cookie1.setPath(request.getContextPath());
cookie2.setPath(request.getContextPath());//发送Cookie给浏览器
response.addCookie(cookie1);
response.addCookie(cookie2);
}
}else {//登录失败
out.print("登录失败,请检查用户名或者密码!");
}
}
}