栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【无标题】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【无标题】

这两天在学习jsp,老师布置了一个监听器作业,做完了顺便发一下博客 要求:点击前端登录超链接,服务器统计当前人数且生成一个“退出超链接”返回至浏览器前端,此时点击“退出超链接”,服务器会将当前服务器在线人数减一并返回值浏览器客户端; 前端页面




Insert title here


点击登录




前端按钮点击事件
	
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;
import javax.servlet.http.HttpSession;


@WebServlet("/https://blog.csdn.net/m0_49713747/article/details/login")
public class https://blog.csdn.net/m0_49713747/article/details/login extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    
    public https://blog.csdn.net/m0_49713747/article/details/login() {
        super();
        // TODO Auto-generated constructor stub
    }

	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
	HttpSession session=request.getSession();//获取请求方(浏览器)session
	request.getServletContext().getAttribute("num");//获取请求方的num属性
	response.setContentType("text/html;charset=utf-8");//设置响应浏览器的编码方式为utf-8
	Integer num=(Integer)request.getSession().getServletContext().getAttribute("num");
	System.out.println("https://blog.csdn.net/m0_49713747/article/details/login被调用,num="+num);
	response.getWriter().println("当前人数为:"+num);
	response.getWriter().println("点击退出!");//在前段打印的内容,同时点击标签跳转到https://blog.csdn.net/m0_49713747/article/details/loginout这个类
	}

}

创建一个容器属性
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;


@WebListener
public class ServletContextlisten implements ServletContextListener {

    
    public ServletContextlisten() {
        // TODO Auto-generated constructor stub
    }

	
    public void contextDestroyed(ServletContextEvent arg0)  { 
         // TODO Auto-generated method stub
    
    }

	
    public void contextInitialized(ServletContextEvent arg0)  { 
         // TODO Auto-generated method stub
    	//为这个东西添加一个人数属性,Servletcontext可以在web.xml里面创建新的属性,或更改属性
    	Integer num=0;//创建一个包装对象
    	arg0.getServletContext().setAttribute("num", num);//在xml里添加一个属性,以及属性值(属性值要是对象)所以才有的前面的包装对象
    	System.out.println("容器被创建"+num);
    }
	
}

监听session的创建
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;


@WebListener
public class HttpSessionListen implements HttpSessionListener {

    
    public HttpSessionListen() {
        // TODO Auto-generated constructor stub
    }

	
    public void sessionCreated(HttpSessionEvent arg0)  { 
    	// TODO Auto-generated method stub
    	//浏览器只要打开就会创建session
    	//只要session创建了这个监听器就会知道从而调用这个方法
    	Integer num=(Integer) arg0.getSession().getServletContext().getAttribute("num");
    	System.out.println("session被创建"+num);
    	//获取在全局监听器中设置的sum的值
    	//session创建以后
    	num++;
    	arg0.getSession().getServletContext().setAttribute("num", num);
    	System.out.println("session被创建修改"+num);
    	//改完之后重新设置一下servletcontext的属性值
    	//创建就结束了
    	//这里的sum值会被退出的https://blog.csdn.net/m0_49713747/article/details/loginout这个方法通过给servletcontext.getattbute()调用,并输出
    }

	
    public void sessionDestroyed(HttpSessionEvent arg0)  { 
         // TODO Auto-generated method stub
    	//当访问端(浏览器)关闭之后,session会销毁,销毁之后就要人数减一;
    	Integer num=(Integer) arg0.getSession().getServletContext().getAttribute("num");
    	num--;
    	arg0.getSession().getServletContext().setAttribute("num",num);
    	System.out.println("session被删除修改"+num);
    	//这里的sum值会被退出的https://blog.csdn.net/m0_49713747/article/details/loginout这个方法给调用,并输出

    }
	
}

退出事件
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;


@WebServlet("/https://blog.csdn.net/m0_49713747/article/details/loginout")
public class https://blog.csdn.net/m0_49713747/article/details/loginout extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    
    public https://blog.csdn.net/m0_49713747/article/details/loginout() {
        super();
        // TODO Auto-generated constructor stub
    }

	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.getSession().invalidate();//干掉已存在的session,干掉sessi,监听器会听到,同时在监听器里对sum做操作
		Integer num=(Integer)request.getSession().getServletContext().getAttribute("num");	//获取这个属性的值
		num--;
		System.out.println("https://blog.csdn.net/m0_49713747/article/details/loginout被执行"+num);//num是一个对象,因为,在这个类里面没有所以要定义一下
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().print("你已退出,当前人数为:"+num);
	}

}

xml文件没有发,是因为每个人的路径啥的都不一样,上面的所有代码都把导包给删除了
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/921671.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号