JavaWeb核心知识点

本文涉及的产品
.cn 域名,1个 12个月
简介: 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 静态资源不需要重启可以进行刷新

配置

目录
相关文章
|
4月前
|
安全 Java 编译器
揭秘JAVA深渊:那些让你头大的最晦涩知识点,从泛型迷思到并发陷阱,你敢挑战吗?
【8月更文挑战第22天】Java中的难点常隐藏在其高级特性中,如泛型与类型擦除、并发编程中的内存可见性及指令重排,以及反射与动态代理等。这些特性虽强大却也晦涩,要求开发者深入理解JVM运作机制及计算机底层细节。例如,泛型在编译时检查类型以增强安全性,但在运行时因类型擦除而丢失类型信息,可能导致类型安全问题。并发编程中,内存可见性和指令重排对同步机制提出更高要求,不当处理会导致数据不一致。反射与动态代理虽提供运行时行为定制能力,但也增加了复杂度和性能开销。掌握这些知识需深厚的技术底蕴和实践经验。
92 2
|
1月前
|
存储 设计模式 SQL
[Java]知识点
本文涵盖Java编程中的多个知识点,包括静态与动态代理、基本数据类型转换、设计模式、异常处理、类加载、序列化、ORM框架、IPv4地址分类、编译与解释等。文章详细介绍了每个知识点的原理和使用方法,并提供了相关示例和注意事项。
42 16
[Java]知识点
|
29天前
|
网络协议 Java 物联网
Java网络编程知识点
Java网络编程知识点
41 13
|
3月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
474 37
|
2月前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
34 2
|
2月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
68 5
|
3月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
3月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
122 2
|
2月前
|
安全 Java 编译器
Java基础-知识点(二)
Java基础-知识点(二)
13 0
|
2月前
|
存储 缓存 安全
Java基础-知识点(一)
Java基础-知识点(一)
20 0