1、Http协议位于应用层,建立在TCP/IP协议上,端口为80
2、HTTP请求由(1)请求方法,URI和HTTP协议的版本 (2)请求头 (3)请求正文构成
HTTP响应由(1)HTTP协议版本,状态代码和描述 (2)响应头 (3)响应正文
3、GET请求参数在HTTP请求第一行URI后面
POST请求参数将作为HTTP请求的正文部分
4、ServletContext和web应用具有同样的生命周期
5、重定向sendRedirect:用户请求-->服务器返回302状态码-->浏览器收到响应后,自动请求另一个web
6、JSP生命周期:(1)解析阶段:Servlet解析JSP (2)翻译阶段:Servlet容器把JSP文件翻译成Servlet源文件
(3)编译阶段:编译Servlet源文件生成类
(4)初始化阶段:加载JSP文件对应的Servlet类,创建实例,调用初始化方法 (5)运行时阶段 (6)销毁阶段
7、 SendRedirect重定向 Forward服务器内部转发
地址有变化 地址栏没变化
不能共享 能共享request里面数据
URL能跳转到其他站点 只能在同一个web内
效率较低 较高
浏览器跳转 服务器跳转
HttpServletResponse RequestDispatcher
8、Servlet生命周期
a、如果请求时静态页面,服务器直接返回
b、如果是动态,交给Web容器,如果没有找到Servlet (第一次访问没有),则读取xml配置文件,把相应的Servlet放进Web容器,接着创建Servlet实例,
调用init()-->判断service() -->doget(),dopost(),然后返回给浏览器 -->destory()
9、cookie和session
cookie:一开始客户端没有cookie,访问服务器时会创建
Session:session一开始也没有,服务器创建session,然后返回并保存SessionId在客户端
10、Spring能够包装Hibernate异常,把他们从CheckedException变成RuntimeException
11、Spring提供编程式事务(嵌在业务代码)和声明式事务(xml)
SessionFactory只有使用Hibernate才需要注入,注入事务管理器
12、Spring核心控制器,DispatcherServlet负责接收Http请求,加载配置文件,初始化上下文ApplicationContext,文件上传解析
13、Spring和struts2区别
(1)springmvc是基于方法设计,struts2基于类
(2)struts有自己的interceptor,springmvc用的是独立的Aop方式
(3)springmvc方法之间基本是独立,独享request,response数据。struts2所有Action变量共享的
(4)springmvc的入口是servlet,struts2是filter
14、spring用到的设计模式
(1)工厂模式:BeanFactory
(2)单例模式,依赖注入用双重判断加锁
(3)适配器
(4)代理
15、spring两种代理方式:jdk和cglib
(1) 若目标对象实现了若干接口,则用jdk的Proxy代理
(2) 若没有实现任何接口,则用cglib库生成子类
jdk代理是由java内部的反射机制实现的。
cglib是借助asm来实现的,用到第三方类库,需引入cglib.jar,asm.jar
jdk代理要为目标类同一接口类
cglib代理需要生成增强过的目标类
具体使用可以查看:https://www.2cto.com/kf/201701/590030.html
16、网站负载太大:使用缓存,集群,CDN加速,分布式
17、消息队列:把消息按照产生的次序加入队列。短信,电子邮件,订阅等
18、struts1和struts2的区别
struts1与Servlet严重耦合,Action->Execute
(1)Action必须实现Struts的Action类,Struts2可以不实现任何类或接口
(2)Struts1的Action是单例模式,必须实现线程安全。Struts2是每一请求一个实例
19、Hibernate与Mybatis区别
(1)基本没有复杂语句可选Hibernate,sql封装好了,开发快。负责语句多的选Mybatis
(2)Mybatis需要手写sql
(3)Hibernatw移植性好,Mybatis需不同数据库不同sql
20、过滤器filter和拦截器interceptor的区别
a、filter是基于函数回调的,interceptor基于java反射机制
b、filter依赖Servlet容器,interceptor不依赖
c、filter对几乎所有请求起作用,interceptor只能对action起作用
d、interceptor可以访问action上下文,值栈里的对象。而过滤器不能
e、在action中interceptor可以多次被调用,而filter只在容器初始化时调用一次
f、执行顺序:过滤前->拦截前->action->拦截后->过滤后
21、Hibernate二级缓存
一级缓存是Session级别。二级缓存是SessionFactory基本
一级缓存是事务级别的缓存,必须同一个Session。二级缓存是进程范围的缓存。相同操作就可以用缓存
一级缓存不会出现并发问题。二级缓存会
应用场景:二级缓存:(1)很少被修改数据 (2)不重要的 (3)不会被并发的
22、Maven snapshot代表版本不稳定,处于开发中
Release代表稳定版本,发行版本
23、aop只是对oop的补充。aop是一种设计模式,Spring提供一种实现
24、Spring中,bean的scope默认是singleton
25、a、Java Servlet API引用Session机制来追踪客户状态,定义了HttpSession接口,Servlet容器必须实现该接口
b、当一个Session开始时,Servlet容器将创建一个HttpSession,分配SessionID,,存在客户端浏览器,如果禁用了Cookie,Servlet可以重写客户请求的URL,把SessionID放入URL中
c、HttpServletResponse接口提供重写String.encodeURL(url)
26、IOC注入方式:属性注入,构造注入
没有设值注入的情况下,会根据配置文件构造注入,有的话,构造注入失效
27、在Spring框架中获取连接池的方法
a、DBCP数据源
b、C3P0数据源
c、Spring的DriverManagerDataSourse
d、获取JNDI数据源
28、Spring可以配置文件中配置Bean初始化和消亡函数
29、doget和dopost是HttpServlet的方法
Servlet:init(),service(),destory()
RequestDispatcher:forward()
30、spring的优点
(1)降低耦合性 (2)容器提供单例模式支持 (3)提供aop技术,权限拦截,运行期监控 (4)低侵入式设计
(5)spring的DI机制降低业务对象替换的复杂性
IOC 工厂模式 AOP代理模式
31、IOC是指控制权由应用代码转到外部容器
Servlet接口定义了Servlet的生命周期
IOC由Spring负责控制对象的生命周期和对象间的关系
ApplicationContext建立在BeanFactory之上,提供系统架构服务
32、BeanFactory和ApplicationContext
相同:同过xml配置文件加载Bean,ApplicationContext由BeanFactory接口派生
不同:Beanfactory是延迟加载,直到第一次调用getBean才会报错。ApplicationContext则在初始化时检验
33、SSH struts控制器 spring管理各层 hibernate持久层
SSM springmvc spring Mybatis
34、Struts2和Springmvc原理 (自行google或baidu,两个流程图)
参考书籍:Tomcat与java web 开发技术详解(第二版)孙卫琴,大型网站技术架构:核心原理与案例分析-李智慧,spring实战,spring技术内幕
--------------------------------------------------------------------------------------------------------------
以上为maplefighting个人笔记整理,如有出错,欢迎指正