JavaWeb核心知识点

简介: JavaWeb核心知识点

servlet什么时候创建

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

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

如何解决请求和响应乱码

image.png

解决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支持标准字符集,可以正确传递中文字符。

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

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

请求报文包含三部分

a、请求行:包含请求方法、URI、HTTP版本信息

b、请求头

c、请求内容实体

响应报文包含三部分:

a、状态行:包含HTTP版本、状态码、状态码的原因短语

b、响应头

c、响应内容实体

Servlet是线程安全的吗

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

每次访问同一个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作用域(转发可以,重定向不可以)所有的跳转都用/开头,如果是转发不加虚拟路径,剩下的都加

1 错误

解决

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

配置

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
19天前
|
JavaScript Java 编译器
Java包装类和泛型的知识点详解
Java包装类和泛型的知识点的深度理解
|
29天前
|
安全 Java 测试技术
Java必懂知识点重入锁 synchronized以及应用场景
Java必懂知识点重入锁 synchronized以及应用场景
49 1
|
2月前
|
Web App开发 SQL Java
javaweb实现分页(二)
javaweb实现分页(二)
19 1
|
27天前
|
JSON Java 应用服务中间件
JavaWeb项目之乱码问题及如何解决
JavaWeb项目之乱码问题及如何解决
|
12天前
|
设计模式 SQL Java
java基础知识点(初级二)
java基础知识点(初级二)
|
12天前
|
存储 Java 容器
java基础知识点(初级)
java基础知识点(初级)
|
23天前
|
JavaScript 前端开发
javaweb文件上传和下载
javaweb文件上传和下载
|
25天前
|
Java
java线程知识点总结
Java线程核心概念:线程是程序执行流,一个进程可有多个线程。创建线程通过继承Thread或实现Runnable接口。线程状态包括新建、就绪、运行、阻塞、等待、超时等待和终止。同步用synchronized或Lock防止数据不一致,避免死锁。线程间通过共享变量、wait/notify通信。线程池(如ThreadPoolExecutor、ScheduledThreadPoolExecutor)优化性能和资源管理。
17 6
|
25天前
|
安全 前端开发 Java
Java Web开发知识点学习总结
Java Web开发涉及Java基础、Servlet、JSP、数据库操作(SQL+JDBC)、MVC设计模式、Spring框架、Hibernate ORM、Web服务(SOAP&RESTful)、安全认证(HTTP Basic/Digest/OAuth)及性能优化(缓存、异步、负载均衡)。
19 3
|
28天前
|
设计模式 安全 Java
Java基础知识点总结1
Java基础知识点总结
24 0