Servlet

1、什么是Servlet

servlet是用来处理客户端请求并生成动态网页的Java类。

2、Servlet的生命周期(相当重要)

①加载servlet:可以在第一次调用的时候加载,也可以在配置文件中设置成在应用程序启动时加载。

②初始化:在第一次请求服务时调用一次init()

③处理请求:每次请求都会调用service()

④销毁:关闭应用程序调用destroy()释放相应资源

3、Servlet安全问题

一个应用程序中只会为每个Servlet类型创建一个Servlet实例,但是这个实例却要同时处理多个请求,因此会产生“一致性”问题

我们可以通过少使用全局变量,和Synchronized加以控制

4、Tomcat如何创建Servlet,用了什么原理

Tomcat读取配置文件中的注册信息,加载Servlet,用反射创建实例

5、Servlet和JSP

①JSP的本质就是Servlet,它是Servlet的一种简化

②JSP中的EL和JSTL,实现前后端分离

6、常用的类和方法

HttpServletRequest

String getParameter(filedname):得到表单参数的值

Cookie[ ] getCookies():获取Cookie

String getHeader(name):得到首部字段

String getMethod():得到方法

HttpSession getSession():返回一个Session,如果没有就创建一个

一般来说httpRequest中有获取请求报文中信息的方法,而httpResponse中则有向相应报文中插入信息的方法

HttpServletResponse

void addCookie(cookie):向响应报文中添加Cookie

void addHeader(name, value):向响应报文添加首部字段

response.sendRedirect():将响应重定向到其他JSP页面

ServletConfig

String getInitParameter(name):获得初始化参数

ServletContext getServletContext():获得Servlet上下文对象

ServletContext

void setAttribute(name, object):设置属性

Object getAtrribute(name):获得属性

void removeAtrribute():移除属性

7、forward(转发)和redirect(重定向)的区别

forward:requset.getRequsetDispatcher(“/***.jsp”).forward(request,response)

将客户端的请求转发给别的JSP页面处理,服务器的行为

redirect:response.sendRedirect(“/***.jsp”)

重定向的地址栏会改变,重新发起一次请求,客户端的行为

8、使用部署描述符的优势

使用部署描述符可以进行更加细致的控制

  • 可以选择在应用启动时加载Servlet
  • 可以选择调用过滤器的顺序
  • 不需要重新编译Servlet类

9、Session管理

①URL重写

②隐藏域

这两种方式会将信息暴露在URL中,并且页面会产生很多的链接。隐藏域唯一的优势就是可以传递更多的信息。

③Cookie

Cookie就是在客户端和服务器之间来回传递的信息块儿。可以通过getMaxAge()设置其存活时间

④HttpSession

Session就类似在服务器端存储的一个键值对的表,客户端利用SessionID获得相应的会话信息。

10、Cookie与Session的区别

  • Cookie在C/S之间传递容易被劫持,相对于保存在服务器的Session来说不安全
  • 使用Session的服务器相当于有状态的,不适用与分布式系统;cookie不支持跨域;token令牌就诞生了。
  • Cookie只能够存放字符串,Session可以存放任意的对象
  • Session需要Cookie的支持,帮助其传递SessionID

  深入理解cookie

  什么是token

11、JSP的四种作用范围

PageContext:作用于整个页面

ServletRequest:作用于一次请求

HttpSession:作用于一次会话

ServletContext:作用于整个应用程序

12、JSP内置隐藏对象

request :HttpServletRequest

reponse:HttpServletReponse

pageContext:PageContext

session:HttpSession

application:ServletContext

out : JspWrite

config:ServletConfig

page:HttpJspPage

exception

13、JSP静态包含和动态包含的区别

①静态包含是Jsp命令,动态包含是Jsp动作

②静态包含在编译期合成了一个文件,动态包含运行时合成一个文件

③动态包含可以包含HTML文件,动态包含只能包含JSP文件

14、怎样避免JSP页面自动生成Session

<%@ page session=”false”>

15、生成自定义标签

①继承SimpleTagSupport实现doTag()方法

②使用标签文件中的标签命令

16、监听器

按照范围划分

ServletContext

  • ServletContextListener:监听ServletContext的创建和析构
  • ServletContextAttributeListener:监听属性的变化
    • attributeAdd():监听属性的增加
    • attributeRemove():监听属性的删除
    • attributeReplace():监听属性的更新

HttpSession

  • HttpSessionListener:监听HttpSession的创建和析构
  • HttpSessionAttributeListener:监听属性的变化

ServletRequest

  • ServletRequestListener:监听ServletRequest的创建和析构
  • ServletRequestAttributeListener:监听属性变化

17、Filter过滤器:对资源采取某些控制措施

生命周期

Init()

doFilter()

destroy()

FilterChain.doFilter():会引发下一个过滤器的调用,若没有下一个过滤器则调用资源本身。

18、DAO模式

DAO(数据访问对象)模式:把数据库相关的操作分离成独立的模块。

19、异步处理

支持为长时间运行的任务重新分配一个线程,让请求处理线程返回到池中处理其它任务。

20、动态注册

利用反射机制动态创建web对象

21、SpringMVC与Structs

Structs采用Filter作为控制器,SpringMVC使用Servlet作控制器

SpringMVC在开发效率和性能上要高于Structs

22、Servlet的业务流程

  浏览器向Tomcat服务器发送请求,服务器根据配置文件解析对应Servlet处理程序,服务器将处理结果传回浏览器。

posted @ 2019-12-20 21:27  卑微芒果  Views(344)  Comments(0Edit  收藏  举报