servlet什么时候创建

JavaWeb核心知识点_服务器

默认情况第一次访问创建,可以通过配置load-on-startup的值,让servlet的随着tomcat启动而创建,该值只要大于等于0即可。该值越小优先级越高

JavaWeb核心知识点_tomcat_02

JavaWeb核心知识点_tomcat_03

JavaWeb核心知识点_作用域_04

JavaWeb核心知识点_重定向_05

servlet生命周期的三个方法是什么

JavaWeb核心知识点_数据_06

JavaWeb核心知识点_tomcat_07

JavaWeb核心知识点_重定向_08

JavaWeb核心知识点_数据_09

如何解决请求和响应乱码

JavaWeb核心知识点_tomcat_10

解决POST乱码,并不能处理get请求乱码,TOMCAT8,自动处理了GET乱码

request.setCharacterEncoding(“utf-8”)

response.setContentType(“text/html;charset=utf-8”)

Session和cookie有什么区别?
  1. Cookie是会话技术,将用户的信息保存到浏览器的对象. Session也是会话技术,将Session的信息保存到服务器的对象
  2. cookie存在浏览器,session存在服务器
  3. cookie不安全,session安全 相对而已session某种程度上也不安全
  4. cookie有大小数量限制,session没有。(数量和大小不同浏览器不一样)
  5. session基于cookie
  6. 若考虑减轻服务器负担,应使用Cookie
session和cookie的原理

浏览器第一次访问服务器,服务器创建Session对象,同时生成一个Session id,并将ID的值通过JSESSIONID存储浏览器cookie中。之后每次将cookie中的JSESSIONID(我们可以看成用户的唯一标识)传给服务器,然后去服务器的内存中去找对应的seession数据,从而保证数据在多次请求中有效

Jsp有哪些内置对象?作用分别是什么?

JSP 4个作用域:pageContext,request,session,application 域对象用于存储数据

Page,pageContext,request,response,session,application,out,config,exception

  • Page 表示当前JSP页面
  • pageContext对象可以用来获得其他8个内置对象,还可以作为JSP的域范围对象使用.pageContext中存的值是当前的页面的作用范围
  • request代表的是请求对象,可以用于获得客户机的信息,也可以作为域对象来使用,使用request保存的数据在一次请求范围内有效。
  • session代表的是一次会话,可以用于保存用户的私有的信息,也可以作为域对象使用,使用session保存的数据在一次会话范围有效
  • application:代表整个应用范围,使用这个对象保存的数据在整个web应用中都有效。
  • response是响应对象,代表的是从服务器向浏览器响应数据.
  • out:JSPWriter是用于向页面输出内容的对象,先将数据保存到服务器的缓存中,最后再一次性将数据写给浏览器
  • config:指的是ServletConfig用于JSP翻译成Servlet后 获得Servlet的配置的对象.
  • exception:在页面中设置isErrorPage=”true”,即可使用,是Throwable的引用.用来获得页面的错误信息
EL表达式中的4个作用域和EL中的有什么区别?

pageScope,requestScope,sessionScope,applicationScope

JSP中的四个作用域对象可以对域中的数据添加,获取,删除。而EL中的只能获取域对象中的数据

如何使用EL表达式获取虚拟路径

${pageContext.request.contextPath}

http 常见的状态码有哪些
  • 200 服务器正常相应数据
  • 302 重定向
  • 304 访问缓存
  • 403 服务器拒绝访问
  • 404 服务器找不到请求的资源
  • 405 服务器内部缺少doGet或者doPost方法
  • 500 (服务器内部错误) 服务器遇到错误,无法完成请求。
  • 503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
http请求方式有几种?
请求方式 使用场景
GET 从服务器向客户端发送命名资源
PUT 将来自客户端的数据存储到一个命名的服务器资源中去
DELETE 从服务器中删除命名资源
POST 将客户端数据发送到一个服务器网关应用程
GET和POST区别

1、get重点在从服务器上获取资源,post重点在向服务器发送数据;
2、get传参通过URL,拼接方式?参数名=值&参数名=值
3、Get传输的数据量小,因为受URL长度限制,但效率较高;Post可以传输大量数据,所以上传文件时只能用Post方式
4、get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;post较get安全性较高
5、get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码;post支持标准字符集,可以正确传递中文字符。

JavaWeb核心知识点_服务器_11

实在记不住,一句话,post相对于get更加安全,并且没有大小限制。

HTTP请求报文与响应报文格式

请求报文包含三部分

a、请求行:包含请求方法、URI、HTTP版本信息
b、请求头
c、请求内容实体

响应报文包含三部分:

a、状态行:包含HTTP版本、状态码、状态码的原因短语
b、响应头
c、响应内容实体

Servlet是线程安全的吗

JavaWeb核心知识点_数据_12

不安全,所以不建议在servlet中定义成员变量

JavaWeb核心知识点_重定向_13

每次访问同一个JSP页面都会重新编译成Servlet吗

只有第一次或者JSP发生变化才会重新编译

jsp中有哪些脚本作用是什么

脚本的作用嵌套JAVA代码

<% 任意java代码%>

<%=表达式%> 在页面输出数据

<%!定义成员变量,不推荐,因为SERVLET是线程不安全的,不建议使用成员变量%>

ServletContext有几个功能

获取MIME类型

作为域对象存储数据

获取web目录下的资源

获取web.xml中的配置信息

cookie的数量限制

不同浏览器cookie的数量限制不同

​ Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie。

​ Firefox每个域名cookie限制为50个。

​ Opera每个域名cookie限制为30个。

​ Safari/WebKit貌似没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。

注:“每个域名cookie限制为20个”将不再正确!

cookie的大小限制

不同浏览器间cookie总大小也不同:

  Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。

  Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。

  InternetExplorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。

注:多字节字符计算为两个字节。在所有浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。

浏览器关闭session就销毁了,这句话对吗

不对,浏览器关闭,session不会立刻销毁,默认30分钟以后销毁。可以通过修改tomcat中web.xml配置,修改默认存活时间

浏览器关闭了,重新打开,还是之前的session吗

默认情况不是,JSESSIONID存在cookie中,默认浏览器关闭就消失,所以下次打开浏览器会重新生成一个JSESSIONID,使用的session也肯定不是同一个了

可以通过修改JSESSIONID的存活时间,也就是延长cookie的生命周期为正数,这样重新打开浏览器,访问的还是之前的session

服务器重启后原来的sesssion还在吗?

 

存在,服务器正常关闭会将SESSION 序列化(钝化,写入)到硬盘,下次启动会将数据读取(活化、反序列化)到内存

如何销毁session

默认情况30分钟浏览器和服务器没有交互自动销毁,可以修改默认配置apache-tomcat-8.5.31\conf\web.xml 。改名默认存活时间,或者手动调用session对象的invalidate()方法销毁session

说说session的应用场景

验证码、购物车、用户登录信息

重定向和转发的区别
  1. 发送了几次请求(转发一次,重定向2次)
  2. 浏览器地址栏有没有发生变化(转发不变,重定向变)
  3. 能不能使用request作用域(转发可以,重定向不可以)
  4. 所有的跳转都用/开头,如果是转发不加虚拟路径,剩下的都加

1 错误

JavaWeb核心知识点_tomcat_14

解决

JavaWeb核心知识点_数据_15

2 静态资源不需要重启可以进行刷新

JavaWeb核心知识点_服务器_16

配置

JavaWeb核心知识点_数据_17