一、JavaEE和JavaWeb的区别
什么是javaEE呢?
javaEE包含两个部分:B/S(浏览器/服务器)架构以及C/S(客户端/服务器)架构
而JavaWeb属于B/S架构,是基于浏览器的,所以可以说javaEE包含了JavaWeb
两者使用的服务器也不同:
javaweb使用的服务器是Tomcat
JavaEE使用的服务器是TomEE
二、项目创建的两种方式
三、三大组件
Servlet | Filter | Lisenter |
接收、处理、响应用户请求 | 过滤器,拦截请求 | 监听器,监听某一行为 |
四、请求和响应
| 请求 | 响应 |
组成 | 请求头、请求体(get没有,post有) | 响应头、响应体(又称响应正文) |
五、创建Servlet的三种方式
创建方式 | 实现Servlet接口 | 继承GenericServlet抽象类 | 继承HTTPServlet抽象类 (开发常用) |
所属包 | javax.servlet | javax.servlet | javax.servlet.http |
区别 | 能够看到Servlet的生命周期,但是比较繁琐 | 跟前一个相比,继承该类后只需要实现其中的service方法 | 避免了重写多个方法,只需要重写doGET和doPOST来处理请求(后续不再需要手动创建Servlet类,可以使用快捷的方式) |
六、配置Servlet
方式 | WEB-INF/web.xml | 在Servlet类上 |
操作 | 使用标签的方式完成Servlet的配置,但是过于繁琐 | 通过在类上方添加注解的方式(后续使用较多) |
七、Servlet其他对象
名称 | ServletConfig | ServletRequest | ServletResponse |
| 在init()函数中 | 请求对象创建 | 响应对象创建 |
常见方法 | ------ | getParameter(String name) 根据请求参数name拿到请求参数的值 | getWriter() 得到字符响应输出流,可以往页面写内容 |
八、url-pattern
/字符串 | /字符串/* | *.字符串 | /* |
精准匹配到字符串 | 前缀匹配,只要前面是该字符串的都会匹配到 | 后缀匹配,以该字符串结尾的都会匹配到 | 匹配所有 |
\
生命周期 => | 跟随Tomcat,Tomcat启动时创建,关闭时销毁 |
作用范围 => | 由于是application域的对象,所以在整个项目中都有效 |
存放内容=> | 存放的是 key=value 的键值对,key为String类型,value为Object类型 |
创建方式=> | 通过ServletConfig的getServletContext()方法得到 | 直接通过this.getServletContext()方法获得 |
十、常见请求码
200 | 304 | 404 | 405 | 400 | 500 |
成功 | 转发 | 资源不存在 | 不支持请求方式 | 失败请求 | 服务器内部错误 |
十一、转发和重定向
名称 | 转发 | 重定向 |
区别 | 转发到一个页面后存在request域中的值还是能够访问到 | 重定向到一个页面后存在request域中的内容将不能够被访问 |
使用场景 | 数据存活周期短,只在一次请求中有效 | 除了前面的情况外,其他都用该方法 |
共同点 | 都可以进行页面的跳转 |
十二、jsp
语法 | <% %> | <%= %> | <%! %> |
作用 | java能够写的代码这里都能写,也可以调用response,不能定义属性 | 将表达式的结果在页面展示如a+1,不能写if语句 | 定义属性,定义方法 如private int b=10 |
2、jsp中三大指令
十三、session域对象HTTPSession
获取方式 | 保存和获取的方法 | 删除的方法 | session存活时间 |
request.getSession() | setAttribute(),getAttribute() | invalidate | 默认存活时间为30分钟 |
javaweb常见面试题
1、Servlet的生命周期
1、Servlet默认情况下是第一次请求发起时有Tomcat创建
2、先调用init()函数,由Tomcat创建,只调用一次,又叫做生命周期函数
3、用户每请求一次Servlet,Tomcat都会调用一次service()函数
4、在Tomcat关闭时销毁所有的对象,包括Servlet,而在Servlet销毁之前会调用destroy()函数,
释放资源,只执行一次
2、四大域对象
<作用范围从大到小>
名称 | application | session(常用) | request(常用) | page |
作用范围 | 整个项目都有效 | 在同一次会话中有效(从浏览器打开开始到关闭结束) | 在同一次请求中有效(只有请求了该页面才能够有效) | 在同一个页面有效 |
都可以直接使用,不需要创建
四大域对象 | application | session | request | pageContext |
响应对象 | response |
响应流对象 | out |
配置对象 | config |
表示this | page |
异常 | exception |
4、session工作原理
服务器会为用户创建一个Session对象,
并且把sessionId以cookie的方式保存在用户浏览器中,
用户每次发送请求都会把cookie和JSESSIONID带回服务器
服务器拿到cookie中的JSESSIONID后到session池中进行匹配
得到对应的session对象,这样服务器就知道当前请求是哪个会话
的
如果客户端的cookie被删除了,那么请求不会带Jsessionid,那么服务器就无法匹配到session池中的对象,而30分钟后该session中的对象就会自动销毁
如果服务器把session删除了,那么就算客户端有sessionid的cookie,也无法得到session池中对应的session对象,这时服务器会重新创建一个新的session并将新的sessionid以cookie的形式保存进客户端