Java面试手册V2.0+突击V3.0知识点整理(十七) 附封面图片

在这里插入图片描述


1. Servlet生命周期
  • Sevlet生命周期是初始化(init)、服务(service)、销毁(destory)
    • 初始化(init):模式第一次请求前,只初始化一次。修改web.xml,允许服务器启动时初始化
    • 服务(service):方法被调用时进行服务,在项目启动期间可以进行多次服务(请求一次执行一次)
    • 销毁(destory):当服务器关闭时进行销毁,只销毁一次
  • Servlet接口中声明三个方法,tomcat在不同的时候将调用不同的方法:
    • init初始化方法,2种情况下会被调用:
      1. 默认,第一次请求前
      2. 在web项目核心配置文件web.xml中,配置初始化,将在服务器启动时初始化
    • 每次请求时,调用服务
    • 服务器关闭时,调用销毁

2. jsp和servlet区别?
  • Servlet是服务器端的程序,JSP是服务器页面程序
  • JSP本质上是一个Servlet,在访问jsp时,在服务器端会将jsp先转换为servlet,再将生产的servlet的结果响应给浏览器
  • jsp是html页面中内嵌Java代码,侧重页面显示;Servlet是书写Java代码,侧重逻辑控制
    在这里插入图片描述

3. Servlet接口中有哪些方法?
  • init(ServletConfig):初始化方法,默认第一行请求前执行,完成Servlet初始化工作
  • service(ServletRequest, ServletResponse): 执行方法,一次请求执行一次
  • destory():销毁方法,Servlet对象应该从服务中被移除的时候,容器会调用该方法进行销毁操作
  • getServletConfig():获得ServletConfig配置对象,包括初始化参数等
  • getServletInfo:获得Servlet描述,一般没有用
    在这里插入图片描述

4. Servlet3.0中的异步处理指的是什么?
  • 异步处理允许Servlet重新发送一条新线程去调用耗时业务方法,这样就可以避免等待
    在这里插入图片描述

5. Servlet中如何获取用户提交的查询参数或者表单数据?
  1. request.getParameterValues(“参数”); // 获得指定参数名的一组参数值(String[])
  2. request.getParameter(“参数”); // 获得指定参数名的一个参数值(String)
public class TestRequestParam{
	private HttpServletRequest request;
	public void testDemo01(){
		// 请求数据: index.html?username=jack&hobby=walk&hobby=sing
		// 获得username的值,一个值
		String username = request.getParameter("username");
		// 获得hobby的值,一组值
		String[] hobbyArr = request.getParameterValues("hobby");
		// 所有值, map.key 参数名称, map.value 参数的值
		Map<String, String[]> map = request.getParameterMap();
	}
}

6. 区别请求转发和重定向
  • 可从下面三方面比较
    1. 地址栏:
      • 转发:显示的是请求的URL
      • 重定向:显示的不是请求的URL, 而是重定向指向的新的URL
    2. 浏览器发送了几次请求?
      • 转发:一次请求
      • 重定向:2次请求
    3. 是否可以进行Request的数据共享?
      • 转发:两个资源之间是同一个request对象,可以共享request中的数据
      • 重定向:两个资源之间不是同一个request对象,不可以共享
        在这里插入图片描述

7. 比较Servlet和Filter
  • 概念:
    • Servlet是一种运行在服务端的Java程序,独立于平台和协议,可以动态生成web页面,它工作于客户端请求和服务器的中间层
    • filter是一个可以复用的代码段,可以用来转换请求,响应以及头信息,filter不能产生请求和响应,它只能在请求到达servlet之前对请求进行修改,或者在请求返回客户端之前对响应进行处理
  • 生命周期
    • Servlet是在系统启动或者请求到达servlet时,通过init()方法进行初始化,一旦被装了web服务器,一般不会从Web服务器删除,直到服务器关闭才会调用destroy()方法进行销毁。每次请求,Request都会被初始化,响应请求后,请求被销毁。但是servlet不会随着请求的销毁而销毁。但是servlet不会随着请求的销毁而销毁
    • filter是在系统启动的时候通过init()初始化的,每次请求都只会调用dofilter方法进行处理,服务器停止的时候调用destroy()进行销毁
注意: 服务器关闭时,servlet和filter依此销毁
  • 职责

    • servlet可以动态创建基于客户请求的页面;可以读取客户端发来的隐藏数据和显示数据;可以和其他的服务器资源进行通讯;通过状态代码和响应头向客户端返回数据
    • filter主要是对请求到达servlet之前对请求和请求头信息进行前处理,和对数据返回客户端之前进行后处理
  • 区别

    • servlet的流程比较短,url来了之后就对其进行处理,处理完就返回数据或者转向另一个页面
    • filter的流程比较长,在一个filter处理之后还可以转向另一个filter进行处理,然后再交给servlet,但是servlet处理之后不能向下传递了
    • filter可用来进行字符编码的过滤,检测用户是否登陆的过滤,禁止页面缓存等

8. 我们在web应用开发过程中经常遇到输出某种编码的字符,如iso-8859-1等,如何输出一个某种编码的字符串?
public String translate(String str){
	String tempStr = "";
	try{
		tempStr = new String(str.getBytes("ISO=8859-1"), "GBK");
		tempStr - tempStr.trim();
	}
	catch(Exception e){
		System.out.println(e.getMessage());
	}
	return tempStr;
}


9. Servlet执行时一般实现哪几个方法?
  • public void init(ServletConfig config)
  • public ServletConfig getServletConfig()
  • public String getServletInfo()
  • public void service(ServletRequest request, ServletResponse response)
  • public void destroy()

10. 描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
  1. cookie是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个web站点会话间持久的保存数据
  2. session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了
    注意:为这个用户创建的Cookie名称是aspsessionid。这个Cookie的唯一目的就是为每一个用户提供不同的身份认证
  3. cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式
  4. cookie和session的区别是:cookie保存在客户端,session数据保存在服务器端
  5. session工作原理:session技术中所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话的sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登录或具有某种权限

上一篇:Java面试手册V2.0+突击V3.0知识点整理(十六) 附封面图片😍
下一篇:Java面试手册V2.0+突击V3.0知识点整理(十八) 附封面图片😍


如果觉得封面图片还行,请顺手点个赞😍
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SimpleZihao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值