查看全文:https://www.longkui.site/program/java/idea2020sevletsession2/7213/
【任务目标】
通过所学Session知识,使用Session技术模拟用户登录。
当用户访问某个网站的首页时,首先会判断用户是否登录,如果已经登录,则在首页中显示用户登录信息,否则进入登录页面,实现用户登录功能,然后显示用户登录信息。
1.创建实体类
右击entity文件夹,选择New—>Java Class,名字为User
代码参考如下:
package cn.itcast.session.entity;public class User{private String username;private String password;public StringgetUsername(){returnusername;}public void setUsername(String username){this.username=username;}public StringgetPassword(){returnpassword;}public void setPassword(String password){this.password=password;}}2.创建Servlet
右击Servlet,选择New—>Create New Servlet,名字为IndexServlet
IndexServlet.java参考代码如下:
package cn.itcast.session.servlet;importcn.itcast.session.entity.User;importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.*;@WebServlet(name="IndexServlet",urlPatterns="/IndexServlet")public class IndexServlet extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{// 解决乱码问题 response.setContentType("text/html;charset=utf-8");// 创建或者获取保存用户信息的Session对象 HttpSession session=request.getSession();User user=(User)session.getAttribute("user");if(user==null){response.getWriter().print("您还没有登录,请<a href='/chapter05/login.html'>登录</a>");}else{response.getWriter().print("您已登录,欢迎你,"+ user.getUsername()+"!");response.getWriter().print("<a href='/chapter05/LogoutServlet'>退出</a>");// 创建Cookie存放Session的标识号 Cookie cookie=new Cookie("JSESSIONID", session.getId());cookie.setMaxAge(60*30);cookie.setPath("/chapter05");response.addCookie(cookie);}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{doGet(request, response);}}然后创建第二个LoginServlet,代码参考如下:
package cn.itcast.session.servlet;importcn.itcast.session.entity.User;importjava.io.*;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.*;@WebServlet(name="LoginServlet",urlPatterns="/LoginServlet")public class LoginServlet extends HttpServlet{public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{response.setContentType("text/html;charset=utf-8");String username=request.getParameter("username");String password=request.getParameter("password");PrintWriter pw=response.getWriter();//假设正确的用户名 是itcast 密码是123if(("itcast").equals(username)&&("123").equals(password)){User user=new User();user.setUsername(username);user.setPassword(password);request.getSession().setAttribute("user", user);response.sendRedirect("/chapter05/IndexServlet");}else{pw.write("用户名或密码错误,登录失败");}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{doGet(request, response);}}最后创建一个Servlet,名字为LogoutServlet,代码参考如下:
package cn.itcast.session.servlet;importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.*;@WebServlet(name="LogoutServlet",urlPatterns="/LogoutServlet")public class LogoutServlet extends HttpServlet{public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{// 将Session对象中的User对象移除 request.getSession().removeAttribute("user");response.sendRedirect("/chapter05/IndexServlet");}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{doGet(request, response);}}创建完的结构如下:
3.创建登录页面
右击web文件夹,选择New—>HTML File,名字为login.html
后续内容 查看全文:https://www.longkui.site/program/java/idea2020sevletsession2/7213/