Servlet
2022-05-07 14:50:53 21 举报
AI智能生成
登录查看完整内容
Servlet笔记
作者其他创作
大纲/内容
客户端Client(浏览器)
服务器Se'rver(http服务器)
web应用程序(是一种架构模式)
关于html
以文字的方式说明互联网资源如何取得
ftp文件协议
http超文本传输协议
mailto电子邮件协议
file协议
格式:协议://主机:端口号/
协议
假设主机名为www.baidu.com,端口号为8080,资源在home下的indexhtml
http://www/baidu.com:8080/home/index.html
画个图解析
举例
URL:Uniform Resource Locator
URN:Uniform Resource Name
URI:Uniform Resouce Identifer
URL、URN、URI
严格来说是一种通信协议,基于tcp/ip之上的应用层协议
请求(Request)/响应(Response)
无状态通信
非常重要的特性(强调那些能做到,那些不能做到,可以引出session)
delete
put
从客户端发送数据到服务器,一般大量数据都用post
post(发送数据)
从服务器上取得资源
get(获取资源)
如何选择get和post?取决于应用场景,get长度有限,写在url地址栏上不安全
浏览器发送http请求的4种方式
关于http
asp
cgi
php
servlet/jsp
动态网页技术
浏览器不认识动态网页?怎么办
动态网页与静态网页
web程序基础知识
java运行依赖jvm
什么是servlet/jsp,其实就是一个类,用来处理客户端的请求
动态网页运行依赖web容器
servlet/jsp简介
jsp也会被转换为servlet
servlet和jsp的关系
web程序简介
tomcat
eclipse/idea
配置
编写servlet
关键API
准备开发环境
第一个servlet
关于HttpServlet的继承管理,以及Servlet接口
DefaultServlet的作用
在HelloServlet之后
进阶部署设置
编写与设置servlet
客户端发送请求
容器创建了一个仅当这次的HttpServletRequest,同时还会创建一个HttpServletResponse作为响应
容器根据注解或xml找到对应的servlet,调用service方法,把请求和响应对象当作参数传递,最后根据请求方式调用doget或dopost
http的无状态
如果不重写doGet和doPost会出现什么情况
web容器帮我们做了什么?
从容器到HttpServlet
getParameter获取一个参数,字符串类型
getParameters获取一组参数,字符串数组
getParameterNames获取所有请求的参数名称
处理请求参数与标头
seCharacterEncoding
new String(name.getBytes(\"ISO-8859-1\
请求参数编码处理
将另外一个servlet操作流程包含进来
include包含
把请求转发给别的servlet
forward转发
总结区别
requestDispatcher请求转发
关于HttpServletRequest
setContentType
setCharacterEncoding
解决乱码
getWriter获取输出字符串,注意乱码问题
getOutputStream
输出二进制
forward是把请求转发到指定的URL,对于客户端它知不知道呢?并且是同一个请求周期,地址不会发生变化
sendRedirect
sendError
关于HttpServletResponse
通过登录和注册来练习
请求与响应
使用隐藏域的缺陷
(自动登录功能)把服务器应该知道的信息发送到路浏览器,浏览器通过Cookie来保存
打开浏览器证明cookie是怎么存在的,来引出cookie是文件类型的,存储在本地
查看本地淘宝的cookie
自动登录的代码例子,同时演示关闭页签,关闭浏览器进行比较,总结出cookie的原理,然后引出cookie的最大时长概念然后刚是关闭浏览器,现在关闭服务器看看效果。 最后通过多个账号登录,引出cookie唯一性
通过该案例,让学员做一个html自动登录的功能,如果没有登录,重定向到index.html,否住转发到工作首页
使用cookie自动登录
其实就是请求参数的应用,以分页为例
使用URL重写
会话管理基本原理
req.getSession()
getAtrribute()
setAtrribute()
对cookie进行了封装
注意:关闭浏览器实效的是cookie,session会重新创建一个新的
SessionCookieConfig接口可以修改session对应的cookie信息
HttpSession会话管理原理
HttpSession与URL重写
HttSession会话管理
通过HttpSession来改写之前的案例
会话管理
代码例子,通过Servlet接口引出3个方法的定义,然后查看继承关系下是怎么实现的
通过注解和XML提供初始化参数,通过service方法中,获取初始化参数
注意:GenericServlet已经实现了获取参数的API
生命周期
可以获取servlet上下文的很多信息
ServletContext
Servlet进阶API
Web应用程序启动或关闭的时候,然后做一点操作,比如数据库信息的加载
全局的,初始化参数只能web.xml文件中编写
注意:在Servlet初始化之前加载的!!
contextInitialized 初始化时调用
contextDestroyed 销毁前调用
ServletContextListener
attributeAdded 添加属性时
attributeRemoved 删除属性时
attributeReplaced 属性值发生变化时
ServletContextArributeListener
web上下文的监听(整个工程监听)
sessionCreated
sessionDestroyed
HttpSessionListener
HttpSessionAttibuteListener
其它两个暂不讲解
httpSession监听器(session监听)
requestInitialized
requestDestroyed
ServletRequestListener
ServletRequestAtrributeListener
AsyncListener
httpServletRequest监听器(请求监听)
应用程序事件、监听器
用于性能测试,添加日志,编码设置等
init
doFilter
destroy
Filter
过滤器
requestInitialized hello init....start MyFilter doFilterclass org.apache.catalina.connector.RequestFacadenamename-[wenjian]end MyFilter doFilterrequestDestroyed
融合过滤器和监听器,还有初始化,看看这个的调用顺序
每个servlet都是一个线程
AsyncContext
异步处理
Servlet进阶API、过滤器、监听器
原理
编写一个简单的jsp,然后编译后打开目录查看java和class文件
HttpJspBase源码查看
查看init方法
引入
生成_jspservice方法中的代码
<%%>
小脚本
如何转译目前的JSP
page
把另一个jsp包含进来
include
如何转译jsp中的标签库
taglib
<%@ 指令类型 [属性名=属性值] %>
jsp指令
生成属性和方法
注意线程问题
<%! %>
声明
其实就是一个实参 。 out.print()
<%= %>
表达式
隐士对象
从JSP到Servlet
标准标签
减少小脚本,代码可读性
${patam.a.b.c}
案例:通过小脚本和EL的对比,最一个请求参数的加分运算
11个隐士对象
默认null处理为\"\"
直接调用方法 ${pageContext.request.方法名}
访问数组 ${数组名[下标]}
访问对象 ${对象名.属性名} 或 ${对象名[\"属性名\"]}
map集合 ${map.kek}
常用的运算符 + - * /
逻辑运算符 and or not
关系运算符 > < != ==
优点
表达式语言EL
使用JSP
JSTL简介
核心标签库
il8n兼容格式标签库
xml标签库
函数标签库
使用JSTL
tag file自定义标签
simple tag自定义标签
tag自定义标签
自定义标签
jdbc入门
jdbc进阶
使用SQL标签库
整合数据库
web容器安全管理
使用JavaMail
JavaMail入门
认识设计模式
重构、模式与架构
从模式到架构
Servlet
0 条评论
回复 删除
下一页