• Servlet


    Servlet

    Servlet技术

    servletConfig

    web.xml的配置信息

    <init-param>
        <param-name>name</param-name>
        <param-value>张三</param-value>
    </init-param>
    
    
    ServletConfig servletConfig = getServletConfig();
    String name = servletConfig.getInitParameter("name")
    

    servletContext(域对象)

    全局参数

    <context-param>
        <param-name>webName</param-name>
        <param-value>ServletHello</param-value>
    </context-param>
    
    
    ServletContext sc = getServletContext();
    String s = sc.getInitParameter("webName");
    System.out.println(s);
    

    获取绝对路径

    ServletContext sc = getServletContext();
    sc.getRealPath()    # web下的目录
    

    域对象(存储数据的对象就是域对象 )

    servletncontext 本身就是域对象,作用域整个工程

    servletcContext.setAttribute("xxx","xxx")
    String name  =  (String) servletContext.getAttribute("name")
    

    request response

    getContextPath()  #获取工程名
    getMethod()
    getRequestURL()
    getSession()
    getParamter() 根据键获取参数
    getParamterValues("xx")  获取请求参数多个值 通一个键的情况下
    
    
    
    
    getStatus(int sc) 设置响应码
    response.setStatus(200)
    PrintWriter writer = response.getWriter() #常用
    writer.close();
    response.getwriter().write("xxx")  #只能放纯文本
    response.getwriter().println("xxx") #这个常用
    ServletOutputStream ops = response.getOutputStream()
    

    乱码问题

    # 解决post提交参数乱码问题 必须放到得到参数之前
    request.setCharacterEncoding("utf-8")
    
    
    #response响应客户端的乱码
    response.setCharacterEncoding("utf-8")  # 只会改变缓冲流的字符编码格式,没鸟用
    response.setContentType("text/html;charset=UTF-8") #这个方法可以
    

    转发 & 重定向

    转发的方法是 request对象中的方法
    getRequestDispatcher("success.html").forward(request,response)
    重定向
    response.sendRedirect('xxx.html')
    

    不设置持久化时间 浏览器关闭时 则cookie会被清除, 否则会存到浏览器硬盘文件夹中

    Cookie c1 = new Cookie("login","True");
    c1.setMaxAge(10*60); //设置了十分钟,过了这个时间浏览器自动删除cookie信息   秒
    response.addCookie(ck);
    
    Cookie c1=new Cookie("name", "tom");
    c1.setMaxAge(0);
    c1.setPath("/Day29/CookieDemo");
    response.addCookie(c1);
    
    ## 获取cookie
    Cookie[] cookies = request.getCookies();
        for (Cookie cookie : cookies) {
            if("name".equals(cookie.getName())) {
            System.out.println("值:"+cookie.getValue());
        }
    }
            
    Cookie[] cookies = request.getCookies();
            for (Cookie cookie : cookies) {
                if(cookie.getName().equals("name")) {
                    System.out.println("值:"+cookie.getValue());
                }
            }
    

    Session(域对象)

    一次会话:打开浏览器到关闭

    域对象 范围一次会话 (servletContext 域对象 全局)

    //第一步 得到session对象
    HttpSession session = request.getSession();
    //第二步 往session对象中放置数据  所有域对象 方法名都相同 就是调用的对象名不同
    session.setAttribute("sex", "男");
    //第三步  session取数据
    String sex=(String) session.getAttribute("sex");
    System.out.println("域对象中的数据"+sex);
    
    
    
    
    //销毁session
    session.invalidate();
    
    
    //移除域对象中数据
    session.removeAttribute("sex");
    

    配置Session

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    

    过滤器

    在Servlet 和 JSP之前执行

    拦截 Servlet 和 Jsp 的资源

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
            HttpServletRequest hsRequest=(HttpServletRequest) req;
            HttpSession session = hsRequest.getSession();
            String username=(String) session.getAttribute("username");
            if(username!=null) {
                chain.doFilter(req, resp);//放行
            }else {
            req.getRequestDispatcher("login.html").forward(hsRequest, resp);    //不放行
            }
        }
    
    
    
    
    // ((HttpServletResponse) resp).sendRedirect("login.jsp");
    

    /index.jsp

    /s/*

    *.jsp

    监听器

    监听某个对象状态变化的组件

    相关概念

    • 事件源:被监听的对象(request,session,servletContext)(事件源发生状态变化时,触发监听器)

    • 监听器:监听事件源对象 事件源对象的状态变化都会触发监听器

    • 响应行为 :监听器听到事件源的状态变化时 所涉及的功能代码

      监听器有哪些:

    • 第一维度 : request , session ,sevletContext

    • 第二维度 : 监听内容区分:监听与对昂的创建与销毁,监听域对象属性的变化

  • 相关阅读:
    使用XmlDataDocument将数据存储到XML文档
    Dubbo+Nacos 运行异常io.netty.handler.codec.EncoderException: java.lang.NullPointerException
    一、字符串常量Java内部加载
    更高效率,Java快速获取图片尺寸宽高分辨率(支持webp)
    水印宽高比例自适应图片(Java-Thumbnails)
    UEditor 自定义图片视频尺寸校验
    应用宝官方错误日志
    Eclipse使用hibernate插件
    解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
    [Err] 1022
  • 原文地址:https://www.cnblogs.com/tangshuo/p/12744329.html
Copyright © 2020-2023  润新知