cookie:记住用户登录时的用户名
-------------------------------------------------------------------------------------
public class User {
private String username;
private String password;
public User(){}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
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 class UserDB {
private static List<User> users = new ArrayList<User>();
static{
users.add(new User("gfy", "123"));
users.add(new User("yr","123"));
users.add(new User("jxp","123"));
}
public static User findUser(String username, String password){
User user = null;
for(User u : users){
if(username.equals(u.getUsername()) && password.equals(u.getPassword())){
user = u;
break;
}
}
return user;
}
}
-------------------------------------------------------------------------------------
// 读取记住的用户名并提供登录界面
public class LoginUIServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 读取记住的用户名
String username = "";
String checked = "";
Cookie cs[] = request.getCookies();
for (int i = 0; cs != null && i < cs.length; i++) {
Cookie c = cs[i];
if ("userInfo".equals(c.getName())) {
String value = c.getValue(); // 用户名
username = value;
checked = "checked='checked'";
break;
}
}
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;chatset=UTF-8");
PrintWriter out = response.getWriter();
// 提供登录界面
out.write("<form action='/day07/servlet/LoginServlet' method='post'>");
out.write("用户名:<input type='text' name='username' value='" + username + "'/><br/><br/>");
out.write("密码: <input type='password' name='password' value='' /><br/><br/>");
out.write("<input type='checkbox' name='remember' " + checked + "/>记住用户名<br/><br/>");
out.write("<input type='submit' value='登录' />");
out.write("</form>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
-------------------------------------------------------------------------------------
// 完成登录 并 根据是否需要记住用户名来写cookie
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 获取提交过来的表单的值
String username = request.getParameter("username");
String password = request.getParameter("password");
String remember = request.getParameter("remember");
// 验证用户名和密码
User user = UserDB.findUser(username, password);
if(user == null){
out.write("对不起,您访问的用户名或密码错误");
return;
}
// 处理cookie 如: UserInfo = gfy 参数: cookie名称 ,cookie值:表单提交的用户名名称
Cookie c = new Cookie("userInfo", username);
c.setPath(request.getContextPath());
if(remember == null){
// 如果未选中记住用户名,删除cookie
c.setMaxAge(0);
}else{
// 记住cookie
c.setMaxAge(Integer.MAX_VALUE);
}
response.addCookie(c);
out.print("恭喜,登录成功");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
public class User {
private String username;
private String password;
public User(){}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
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 class UserDB {
private static List<User> users = new ArrayList<User>();
static{
users.add(new User("gfy", "123"));
users.add(new User("yr","123"));
users.add(new User("jxp","123"));
}
public static User findUser(String username, String password){
User user = null;
for(User u : users){
if(username.equals(u.getUsername()) && password.equals(u.getPassword())){
user = u;
break;
}
}
return user;
}
}
-------------------------------------------------------------------------------------
// 读取记住的用户名并提供登录界面
public class LoginUIServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 读取记住的用户名
String username = "";
String checked = "";
Cookie cs[] = request.getCookies();
for (int i = 0; cs != null && i < cs.length; i++) {
Cookie c = cs[i];
if ("userInfo".equals(c.getName())) {
String value = c.getValue(); // 用户名
username = value;
checked = "checked='checked'";
break;
}
}
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;chatset=UTF-8");
PrintWriter out = response.getWriter();
// 提供登录界面
out.write("<form action='/day07/servlet/LoginServlet' method='post'>");
out.write("用户名:<input type='text' name='username' value='" + username + "'/><br/><br/>");
out.write("密码: <input type='password' name='password' value='' /><br/><br/>");
out.write("<input type='checkbox' name='remember' " + checked + "/>记住用户名<br/><br/>");
out.write("<input type='submit' value='登录' />");
out.write("</form>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
-------------------------------------------------------------------------------------
// 完成登录 并 根据是否需要记住用户名来写cookie
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 获取提交过来的表单的值
String username = request.getParameter("username");
String password = request.getParameter("password");
String remember = request.getParameter("remember");
// 验证用户名和密码
User user = UserDB.findUser(username, password);
if(user == null){
out.write("对不起,您访问的用户名或密码错误");
return;
}
// 处理cookie 如: UserInfo = gfy 参数: cookie名称 ,cookie值:表单提交的用户名名称
Cookie c = new Cookie("userInfo", username);
c.setPath(request.getContextPath());
if(remember == null){
// 如果未选中记住用户名,删除cookie
c.setMaxAge(0);
}else{
// 记住cookie
c.setMaxAge(Integer.MAX_VALUE);
}
response.addCookie(c);
out.print("恭喜,登录成功");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
-------------------------------------------------------------------------------------