Servlet = Server + Applet
服务 小程序 基于java的线程实现
Servlet的init:该方法只执行一次,
service: 每次请求都执行,
destory:在停止服务器时执行用于释放资源。
生命周期:
创建、初始化(init)、服务(service)、销毁(destory)
- Servlet 初始化后调用 init () 方法。
- Servlet 调用 service() 方法来处理客户端的请求。
- Servlet 销毁前调用 destroy() 方法。
核心的Service的方法(请求、响应)
| HttpServletRequest: req | HttpServletResponse: resp | |
| 作用 | 请求 | 响应 |
| 方法 | getParamter(name): 根据name获取单个值 getParamterValues(name): 根据name获取多个值。 setCharacterEncoding(“utf-8”): 请求编码 | setCharacterEncoding(“utf-8”)响应编码 setContentType(“text/html;charset=utf-8”): 响应头类型和编码 |
Servlet的配置:xml和annotation
Xml:
/
注解: @WebServlet( urlPatterns = {“/**”,”/**”})
JSPJSP: 是英文 Java Server Page ---->Java 服务器 页面(动态页面:实现数据的交互)
Jsp的语法:
1:<% java代码 %>(俗称:jsp小脚本:java代码)
2:<%! 声明语句 %>
3:<%= 表达式 %>
JSP的page指令
| 名称 | 作用 | 说明 |
| ContentType | 设置服务器给jsp的响应编码 | 服务器给jsp |
| PageEncoding | 页面请求的编码方式 | Jsp给服务器的 |
| Language | 设置当前页面动态语言 | 目前只有java |
| Import | 导包 | 可以有多个 |
| ErrorPage | 如果出现异常则要跳转到的页面 | 配置局部异常,jsp页面的异常 |
| isErrorPage | True:表示该页面进行错误处理 | |
| Buffer | 设置页面缓存大小,默认 | 默认为8kb |
| Autoflush | 自动刷新,默认ture | |
| IsELIgonre | 是否或略el表达式 默认false:支持 | |
| IsThreadSeal | 是否是线程安全 默认是false | |
| Session | 是否支持会话:session 默认true |
注释
Jsp的注释: <%-- 注释 --%> 特点:不会进行网络传输。
Html: 特点:会进行网络传输(垃圾代码)
JSP的内置对象9个
1:pageContext
2:request
3:session
4:application
5:out
6:config
7:exception(异常的处理方式: 1:抛出到页面 2:记录到日志文件)
8:page
9:response
JSP四个作用域对象PageContext request session application: (作用范围:从小到大)
pageContext: 只在当前页面生效(private)
request: 针对一个请求(默认) 如果一个新的请求,则不能获取数据。
Session: 针对一个会话(可以是多个请求: public)
Application:应用程序(全局:static)
转发和重定向(重点)
| 区别 | 转发 | 重定向 |
| 方法 | Req.getRequestDispatcher().forward(“本地资源或当前项目”) | Resp.sendRedirect(“url:可以内部也可以是外部”) |
| 对象 | Request(请求) | Response(响应) |
| 次数 | 一次 | 多次 |
| 服务器内部 | 客户端 | |
| 传递数据 | 可以 | 不能 |
| 地址栏 | 不会变化(安全) | 会变化(不安全) |
JSTL
作用:
1: 简化业务逻辑
2; 与html”无缝集成”
<%-- 迭代:必须放在作用域中 --%>
${str}
<%---基本语法 --%>
${i}
ok
好的
不好
会话和跟踪技术:(因为HTTP是个无状态的协议)
1:客户端:cookie(中文:曲奇)
2:服务器:session(会话)
会话:一个用户在访问web程序时,客户端与服务器的多次请求和响应的过程。
Session:保留用户在访问网站时的用户信息(跨页面的)
Session的创建是通过request(请求)对象获取的 getSeesion()
request.getSession(): 如果当前没有session则创建一个新的session,如果有则返回该session。
request.getSession(true); 如果当前没有session则创建一个新的session,如果有则返回该session。
request.getSession(false); 如果当前没有session则返回一个null,如果有则返回该session。
记住:不带参数的getSession()等效于getSession(true)
Session的有效期默认值是30分钟,我们可以通过web.xml进行修改和设置:(单位是分钟)
5
Session:
保存数据到session中:setAttribute(key,Object)
获取 getAttribute(key) ${key} ${sessionScope.key}
移除sesssion : removeAttribute(key)
清空所有session
Filter(过滤器、拦截器)
Web组件中的Servlet有三个子组件:
1:Servlet: 作用:负责请求和响应(重点:了解执行过程)
2:Fiilter: 作用:进行拦截(相同的功能进行AOP)(重点:了解原理)
| 区别 | Servlet | Filter |
| 作用 | 请求和响应 | 过滤(筛选),抽取共性的代码 |
| 配置 | @WebServlet(“/list”) | @WebFilter(“/list”) |
| 执行时机 | 请求时 | 请求前 |
| 多个 | 无顺序:根据url | 有顺序: xml: 注解:根据名称的顺序 |
监听器的实现步骤:
1:创建类实现相应的域对象的监听器
2:重写相应的方法
3:配置web.xml 或:通过@WebListener
监听器的作用:
自动实现对域对象的创建、属性(创建、添加、修改和移除等)的操作。
作用域: pageContext request session application
监听器对:request session application
特点:自动执行
例如:自动实现日志的处理:
servlet、filter、listener区别| 区别 | Servlet | Filter | Listener |
| 功能 | 请求和响应 | 过滤 | 自动监听程序的运行 |
| Annotation | @WebServlet(“/list”) | @WebFilter(/*) | @WebListener |
| Xml | | name Class | |
| 调用方式 | 根据ulr | 自动:根据过滤规则 | 自动调用 |
传值: get和post区别
get和post ---> HttpServlet : doGet 和doPost
doGet:处理get请求: 除了method= post的所有请求
doPost:处理



