1.accept-language
2.MIME协议
是多用途网络邮件扩展协议,包括各种应用层协议在网络上传输的数据
RFC
3.Servlet就是运行在服务器端的Java小程序
它实现了特殊的接口
服务器:接受请求 响应应答
接口:暴露的规则 功能扩展性 降低耦合
Servlet生命周期:
构造函数
init
service
destory
getServletConfig
getServletInfo
4.load-on-startup >=0
启动时加载
数据库连接 启动时就加载能连接到数据库的Servlet 未访问就加载
5.url-pattern
/ 代表web应用程序的目录
6.init ServletConfig
服务器会将实现了ServletConfig的对象传给init
7.ServletConfig
getServletName
getInitParameter
getInitParameterNames
getServletContext 代表整个Web应用程序
getInitParameter 得到init-param 要是Oracle会干吗 要是MySql会干吗
反射 也是通过修改文件 动态改变
开发的时候把配置信息放到文件中,只要文件中的内容改变了,配置信息就改变了
8.接口 太多方法要实现
现在 弄一个类实现这些方法
那么 我就继承你就可以了 有点像AWT的事件监听 adapter
9.GenericServlet
除了service其他的方法我都实现了
强制子类实现service 所以把它抽象出来
log
init()
init(ServletConfig)
GenericServlet 实现Servlet ServletConfig
它有init(ServletConfig) 和 getServletConfig
要这样 就把ServletConfig对象作用与整个类 ---> 成员变量
两种考虑:
1.servletConfig.getInitParam
2.this.getServletConfig.getInitParam
由于覆盖了父类的init 父类的init中的this.servletConfig=servletConfig就没有执行
解决:super.init(config)
还有一种是子类 成员变量 ServletConfig
父类就init(ServletConfig){init()}
init(){}
模板方法设计模式
有一个功能有明确的和不明确的 把不明确的用abstarct暴露出去
子类覆盖不明确的 大的方法调用明确的和不明确的
10.ServletRequest
getLocalAddr
getLocalName
getRemoteAddr
getRemoteHost
getParameter 请求参数 客户端发过来的
?xxx=yyy&zzz=ooo
&怎么转义
中文了
getParameterNames
getParameterValues
getParameterMap
先变为set 后迭代
每一种迭代都试一下
多选 值是多个 数组 名字是同一个
11.ServletResponse
IO流
getWriter
getOutputStream
println <br/>
response.setContentType();
12.GenericServlet HttpServlet
扩展性强 以后可以扩展其他协议的XXXServlet
13.HttpServlet是abstract 但没有方法是abstract
只能是子类继承 覆盖它的方法
向下转型为HttpServlet 判断getMethod doGet doPost
out.flush();
out.close();
14.一个servlet中既有get又有post
开始是自己,提交也是自己
15.表单提交 注册
<> & 先转&后转<> 不然的话把<转换成<又再它的基础上转 变成&lt;
转换文本
< >
将html 转化为普通文本
只要能让用户填写任何信息的要转换
16.get post
get 将数据 封装到头部 地址栏容纳的数量有限
post 将数据 封装到体里面 没有数量限制
ASCII
ISO8859-1
GB2312
GBK
GB18030
Unicode 两个字节标示一个字符
UTF-8
HTTP传输数据时 ISO8859-1
查看源码 request response
request.setCharacterEncoding() 只管体 不管头