servlet相关知识,使用servlet实现定时刷新,实现页面登录次数统计

来源:互联网 发布:长整型数据范围 编辑:程序博客网 时间:2024/06/01 20:58

1、servlet: 动态的web开发技术,本质就是一个类,运行在服务器端的一个java小程序;

作用:处理业务逻辑,生成动态web内容

2、接受参数:  格式:key=value
    Sting value=request.getParameter("key")

回写内容:
    response
    response.getWriter().print("success");
    处理响应数据中文乱码:
        resp.setContentType("text/html;charset=utf-8"); //建议大家放在方法中的第一行

3、servlet生命周期 ★★★
    void init(ServletConfig config):初始化
     * 初始化方法
     * 执行者:服务器
     * 执行次数:一次
     * 执行时机:默认第一次访问的时候
    void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑
     * 服务
     * 执行者:服务器
     * 执行次数:请求一次执行一次
     * 执行时机:请求来的时候
    void destroy():销毁
     * 销毁
     * 执行者:服务器
     * 执行次数:只执行一次
     * 执行时机:当servlet被移除的时候或者服务器正常关闭的时候
    
     serlvet是单实例多线程
     默认第一次访问的时候,服务器创建servlet,并调用init实现初始化操作.并调用一次service方法
     每当请求来的时候,服务器创建一个线程,调用service方法执行自己的业务逻辑
     当serlvet被移除的时候服务器正常关闭的时候,服务器调用servlet的destroy方法实现销毁操作.

4、url-pattern的配置:★
    方式1:完全匹配  必须以"/"开始 例如: /hello /a/b/c
    方式2:目录匹配  必须"/"开始  以"*"结束   例如: /a/*  /*
    方式3:后缀名匹配 以"*"开始 以字符结尾 例如: *.jsp  *.do  *.action

优先级:
        完全匹配>目录匹配>后缀名匹配

案例:实现登录失败时:3秒之后自动跳转至其他页面以及登录次数统计

loginservlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//0.设置编码response.setContentType("text/html;charset=utf-8");//1.接受用户名和密码String username=request.getParameter("username");String password=request.getParameter("password");//2.调用userservice 里的login(username,password) 返回值:User userUser user = null;try {user = new UserService().login(username,password);} catch (SQLException e) {e.printStackTrace();throw new RuntimeException("网络异常,请稍后再试!");}//3.判断user是否为空if(user==null){//3.1若为空 写"用户名和密码不匹配"response.getWriter().print("用户名和密码不匹配,3秒之后跳转");//案例2-定时跳转response.setHeader("refresh", "3;url=/day0902/login.htm");}else{//3.2若不为空 写"xxx:欢迎回来"response.getWriter().print(user.getUsername()+":欢迎回来");//4.获取全局管理者ServletContext context = this.getServletContext();//5.获取总次数Integer cishu = (Integer) context.getAttribute("count");//6.将次数+1cishu++;//7.将次数再次放入域对象中context.setAttribute("count", cishu);}}}

showservlet代码:
public class ShowServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//0.设置编码response.setContentType("text/html;charset=utf-8");//1.获取全局管理者ServletContext context = this.getServletContext();//2.获取登录的次数Integer cishu=(Integer) context.getAttribute("count");//3.在页面上打印总次数response.getWriter().print("登录成功的总次数为:"+cishu);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}


0 0
原创粉丝点击