运行界面
代码
package com.Listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class MyServlectListener implements ServletContextListener { public MyServlectListener() { // TODO Auto-generated constructor stub System.out.println("MyServlectListener的构造方法"); } @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("Listener程序初始化程序开启"); System.out.println("WEB ServletContextListener程序初始化程序开启ServletContext" + "Listener开始@@程序开始运行@@"); } @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("Listener程序初始化程序结束"); System.out.println("WEB contextDestroyed==程序初始化程序in the endontextDestroyed程序结束" + "程序在结束中"); } }
package com.Listener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class MySessionListener implements HttpSessionListener { private static int count=0; public MySessionListener() { // TODO Auto-generated constructor stub System.out.println("MySessionListener() 构造方法"); } @Override public void sessionCreated(HttpSessionEvent se) { // TODO Auto-generated method stub System.out.println("当sesssion创建时执行程序 sessionCreated()构造方法"); se.getSession().getServletContext().setAttribute("count", ++count); } @Override public void sessionDestroyed(HttpSessionEvent se) { System.out.println("当sesssion销毁时执行程序 sessionDestroyed()构造方法"); } }
package com.Listener; import javax.servlet.ServletContext; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; public class User implements HttpSessionBindingListener{ @Override public void valueBound(HttpSessionBindingEvent event) { System.out.println("HttpSession 与 User 绑定"); // 有用户登陆成功 // 判断是否是第一个登陆的人 ServletContext servletContext = event.getSession().getServletContext(); Integer count = (Integer) servletContext.getAttribute("count"); // 第一个登陆为1,非第一个则++ count = null == count ? 1 : (count += 1); servletContext.setAttribute("count", count); } @Override public void valueUnbound(HttpSessionBindingEvent event) { System.out.println("HttpSession 与 User 解绑"); // 有用户注销登陆 ServletContext servletContext = event.getSession().getServletContext(); Integer count = (Integer) servletContext.getAttribute("count"); // count--是因为在同浏览器下重复登陆时session.setAttribute(name, value) // 每次会覆盖value值进而触发监听器valueBound()的count++ servletContext.setAttribute("count", count); } //定义三个数据类型 private int id; private String username; private String password; public User() { } public User(int id, String username, String password) { this.id = id; this.username = username; this.password = password; } public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
package com.Servlect; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.Listener.User; /** * Servlet implementation class LoginServlet */ @WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LoginServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); if ("root".equals(username) && "1234".equals(password)) { // 登陆成功,修f改登陆状态,转发到showIndex页 User user = new User(); user.setUsername(username); user.setPassword(password); request.getSession().setAttribute("existUser", user); // 转发会导致每次刷新页面都会重新登陆,然后被统计新新用户中 //request.getRequestDispatcher("/showIndex").forward(request, response); response.sendRedirect("ServlectA"); } else { // 登陆失败,转发到login.html request.getRequestDispatcher("ServlectB").forward(request, response); } } }
package com.Servlect; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class LogoutServlet */ @WebServlet("/LogoutServlet") public class LogoutServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LogoutServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 注销登陆:将existUser从session域中移除 或 销毁session //request.getSession().removeAttribute("existUser"); request.getSession().invalidate(); // 注销成功 request.getRequestDispatcher("/ShowIndexServlect").forward(request, response); } }
package com.Servlect; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; /** * Servlet Filter implementation class MyFilter1 */ //你要阻止Servlect2 @WebFilter("/Servlect2") public class MyFilter1 implements Filter { /** * Default constructor. */ public MyFilter1() { // TODO Auto-generated constructor stub System.out.println("构造方法"); } /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub System.out.println("销毁数据"); } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); System.out.println("我是myfilter1开始拦截请求地址哦哦"); //实施访问 chain.doFilter(request, response); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub System.out.println("加载数据"); } }
package com.Servlect; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; /** * Servlet Filter implementation class MyFilter2 */ @WebFilter("/Servlect2") public class MyFilter2 implements Filter { /** * Default constructor. */ public MyFilter2() { // TODO Auto-generated constructor stub } /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub // place your code here response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); System.out.println("我是myfilter2开始拦截请求地址哦哦"); //实施访问 chain.doFilter(request, response); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub } }
package com.Servlect; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; /** * Servlet Filter implementation class MyFilter3 */ @WebFilter("/Servlect2") public class MyFilter3 implements Filter { /** * Default constructor. */ public MyFilter3() { // TODO Auto-generated constructor stub } /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub // place your code here response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); System.out.println("我是myfilter3开始拦截请求地址哦哦"); //实施访问 chain.doFilter(request, response); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub } }
package com.Servlect; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Servlect1 */ @WebServlet("/Servlect1") public class Servlect1 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Servlect1() { super(); // TODO Auto-generated constructor stub System.out.println("Servlext构造方法"); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //response.getWriter().append("Served at: ").append(request.getContextPath()); PrintWriter pw =response.getWriter(); pw.print("<h1>我是第一个servlect</h1>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
package com.Servlect; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Servlect2 */ @WebServlet("/Servlect2") public class Servlect2 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Servlect2() { super(); System.out.println("这是Servlect2的抽象方法"); // TODO Auto-generated constructor stub } @Override public void init() throws ServletException { // TODO Auto-generated method stub System.out.println("Servlect2加载数据"); super.init(); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("这里开始运行Servlect的方法"); super.service(req, resp); } @Override protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doDelete(req, resp); System.out.println("Servlect2的删除方法"); } @Override public void destroy() { // TODO Auto-generated method stub super.destroy(); System.out.println("Servlect2销毁数据"); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //response.getWriter().append("Served at: ").append(request.getContextPath()); response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); PrintWriter pw =response.getWriter(); pw.print("<h1>我是第一个servlect2</h1>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
package com.Servlect; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Servlect2 */ @WebServlet("/Servlect4") public class Servlect4 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Servlect4() { super(); System.out.println("这是Servlect4的抽象方法"); // TODO Auto-generated constructor stub } @Override public void init() throws ServletException { // TODO Auto-generated method stub System.out.println("Servlect4加载数据"); super.init(); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("这里开始运行Servlect4的方法"); super.service(req, resp); } @Override protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doDelete(req, resp); System.out.println("Servlect4的删除方法"); } @Override public void destroy() { // TODO Auto-generated method stub super.destroy(); System.out.println("Servlect4销毁数据"); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //response.getWriter().append("Served at: ").append(request.getContextPath()); response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); PrintWriter pw =response.getWriter(); pw.print("<h1>我是第一个servlect4</h1>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
package com.Servlect; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Servlect3 */ @WebServlet("/Servlect3") public class Servlect3 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Servlect3() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //response.getWriter().append("Served at: ").append(request.getContextPath()); response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); PrintWriter pw =response.getWriter(); pw.print("<h1>我是第一个servlect3</h1>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } package com.Servlect; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class ServlectA */ @WebServlet("/ServlectA") public class ServlectA extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ServlectA() { System.out.println("ServlectA的创建过程"); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); PrintWriter pw =response.getWriter(); pw.append("<h1>---A-------session---------Servlect-----</h1>"); pw.append("<h1>----------欢迎光临--------------</h1>"); request.getSession(); Integer count =(Integer)request.getServletContext().getAttribute("count"); pw.append("<hr>"); pw.append("<h1>-----欢迎光临----你是第《"+count+"》----为客人----</h1>"); pw.append("<hr>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } package com.Servlect; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class ServlectB */ @WebServlet("/ServlectB") public class ServlectB extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ServlectB() { super(); System.out.println("ServlectB的创建过程"); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); PrintWriter pw =response.getWriter(); pw.append("<h1>---ServlectB-------session---------Servlect-----</h1>"); pw.append("<h1>----------欢迎下次光临--------------</h1>"); pw.append("<hr>"); request.getSession(); Integer count1 =(Integer)request.getServletContext().getAttribute("coun"); pw.append("<hr>"); pw.append("<h1>-----欢迎光临----你是第《"+count1+"》----退出的客人----</h1>"); pw.append("<h1 >----------欢迎下次光临--------------</h1>"); pw.append("<hr>"); request.getSession().invalidate(); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } package com.Servlect; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.catalina.User; /** * Servlet implementation class ShowIndexServlet */ @WebServlet("/ShowIndexServlet") public class ShowIndexServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ShowIndexServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); response.getWriter().write(response.toString()); User existUser = (User) request.getSession().getAttribute("existUser"); StringBuffer responseBody = new StringBuffer(); if (null == existUser) { // 不在登陆状态 responseBody.append("您还没有登陆,<a href='/demo/login.html'>请登录</a>"); } else { // 在登陆状态 responseBody.append("欢迎回来,").append(existUser.getUsername()).append(" <a href='/demo/logout'>注销</a>"); } // 获取在线人数 ServletContext servletContext = getServletContext(); Integer count = (Integer) servletContext.getAttribute("count"); System.out.println("<h1>在线人数:<h1>" + count); if (null == count) { // 没有人登陆时,0人 count = 0; } responseBody.append("<br>在线人数为:").append(count).append("人"); } } package com.Servlect; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class ZhuJie */ @WebServlet("/ZhuJie") public class ZhuJie extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ZhuJie() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); PrintWriter pw =response.getWriter(); pw.append("<div align='center'>"); pw.append("<form>"); pw.append("<h1 style='color: lightskyblue;\r\n" + " background-color: #0066CC;'>" + "欢迎进入统计登录人数的主界面</h1>"); pw.append("<hr>"); pw.append("<h1 ><a href='ServlectA' style='color:red'>TEST@SessionA创建</a></h1>"); pw.append("<hr>"); pw.append("<h1 ><a href='ServlectB' style='color:red'>TEST@SessionB销毁</a></h1>"); pw.append("</form>"); pw.append("</div>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }