有关servlet的几种面试题

1、Post和Get的区别

Post:
    请求参数在请求体中

    请求的url的长度没有限制

    较为安全
Get:
    亲求参数在请求行中

    请求的url长度没有限制

    相对不安全
中文乱码问题:
        * get方式:tomcat 8 已经将get方式乱码问题解决了
        * post方式:会乱码
            * 解决:在获取参数前,设置request的编码request.setCharacterEncoding("utf-8");

2、forward 和 redirect 区别

* 重定向的特点:redirect
            1. 地址栏发生变化
            2. 重定向可以访问其他站点(服务器)的资源
            3. 重定向是两次请求。不能使用request对象来共享数据
* 转发的特点:forward
            1. 转发地址栏路径不变
            2. 转发只能访问当前服务器下的资源
            3. 转发是一次请求,可以使用request对象来共享数据    

3、ServletContext对象:

1. 概念:代表整个web应用,可以和程序的容器(服务器)来通信
2. 获取:
    1. 通过request对象获取
        request.getServletContext();
    2. 通过HttpServlet获取
        this.getServletContext();
3. 功能:
    1. 获取MIME类型:
        * MIME类型:在互联网通信过程中定义的一种文件数据类型
            * 格式: 大类型/小类型   text/html        image/jpeg

        * 获取:String getMimeType(String file)  
    2. 域对象:共享数据
        1. setAttribute(String name,Object value)
        2. getAttribute(String name)
        3. removeAttribute(String name)

        * ServletContext对象范围:所有用户所有请求的数据
    3. 获取文件的真实(服务器)路径
        1. 方法:String getRealPath(String path)  
             String b = context.getRealPath("/b.txt");//web目录下资源访问
             System.out.println(b);

            String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目录下的资源访问
            System.out.println(c);

            String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目录下的资源访问
            System.out.println(a);

4、session与Cookie的区别:

cookie能不能存中文?
    * 在tomcat 8 之前 cookie中不能直接存储中文数据。
        * 需要将中文数据转码---一般采用URL编码(%E3)
    * 在tomcat 8 之后,cookie支持中文数据。特殊字符还是不支持,建议使用URL编码存储,URL解码解析

session什么时候被销毁?
    1. 服务器关闭
    2. session对象调用invalidate() 。
    3. session默认失效时间 30分钟
        选择性配置修改:当前项目下的web.xml中:    
        <session-config>
            <session-timeout>30</session-timeout>
        </session-config>

1. session存储数据在服务器端,Cookie在客户端
2. session没有数据大小限制,Cookie有
3. session数据安全,Cookie相对于不安全
-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!