Web核心
JavaEE:Java语言在企业中开发的技术规范总和,一共规定了13项规范
常见4种的Javaweb服务器软件:
weblogic:Oracle公司的产品,大型JavaEE服务器,支持所有JavaEE规范,是一款付费软件
webSphere:IBM公司,特点同上
JBOSS:JBOSS公司,特点同上
Tomcat:Apache基金会,中小型JavaEE服务器,仅支持少量的JavaEE规范,开源免费
netty(了解)
Spring全家桶、Apache产品
Tomcat
记住4个目录:
bin
conf
webapps
lib
常用cmd命令行:
netstat -ano | findStr "8080"
强行终止PID为4412的程序:
taskkill /F /PID 4412
tasklist -svc
查找进程名称为java的程序
tasklist -svc | findStr "java"
Tomcat如何关闭?
正常关闭:
shutdown.bat
或者,在tomcat控制台Ctrl+C,也会正常关闭
强制关闭:
直接点x
Tomcat 项目部署
直接文件夹复制进webapp目录下
或者先把项目使用zip打成war包,复制进webapp目录下,会自动解压缩,删除也会自动删除
在server.xml配置项目的虚拟目录(不推荐)
在<host>标签中配置如下内容:
<Context docBase="D:\" path="/hehe">
在conf\Catalina\localhost创建任意名称的xml文件
写入如下内容<Context docBase="D:\" >
访问的时候把xml文件名作为虚拟目录访问即可
Web项目的目录结构
Servlet接口
1、实现Servlet接口
关键方法 service()
2、配置Servlet
<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
Servlet生命周期
1、创建 init() 创建后执行一次
什么时候被创建?
①默认情况下第一次被访问时被创建
②可以手动配置指定Servlet创建时机
在<servlet>标签中添加
<load-on-startup>1-10之间的正数</load-on-startup>
Servlet是单例的,会有线程安全问题
单例会导致多线程访问数据不安全问题,如何解决?
加锁不是一个好办法,会导致排队
解决办法:避免在service()方法中进行成员变量的修改操作
2、服务 service() 每次访问时执行
3、销毁 destroy() 销毁前执行一次
Servlet3.0之后的新特性:注解配置Servlet
这样就可以不使用web.xml也就不用配置标签(创建项目时不创建web.xml)
使用:在自定义Servlet类前加注解@WebServlet("/hello")
注意,注解不要和web.xml同时用
IDEA关于Tomcat的相关配置
区分两个项目:
工作空间的项目:java文件所在的项目
Tomcat的部署项目:真正部署在服务器上的项目
注解配置Servlet的补充:
/user
/user/*
*.do 此处的后缀名可以随便起
/user.*
Servlet继承体系
Servlet
-GenericServlet
-HttpServlet
http协议
一次访问对应一次请求+一次响应
默认端口80
基于TCP 三次握手和四次挥手
简述TCP和UDP的区别
http 1.0
每次请求都会建立新连接
http 1.1
新特性:SPDY协议
连接复用
HTTP请求的数据格式:
1、请求行
请求方式 url 请求协议
GET "XXXX/XXX" HTTP/1.1
http共有7种请求方式,常用方式get和post
get和post的区别?
GET:
参数在请求行中
请求url长度有限制
安全性较低
无法上传文件
POST:
参数在请求体中
请求url长度无限制
安全性较高
上传文件只能用post
2、请求头
请求头名称1:值1
请求头名称2:值2
Accept: text/html, application/xhtml+xml, application/xml; q=0.9, */*; q=0.8
Referer: http://localhost:8080/tomcat_demo/
1、防盗链
2、数据统计
3、请求空行
空行,分隔请求头和请求体
4、请求体
GET方式没有请求体,POST有请求体
键=值
Request对象
继承体系结构:
ServletRequest 接口
-HttpServletRequest 接口
-RequestFacade 实现类,由Tomcat提供
request功能:
获取请求行 请求头 请求体
路径问题:
最前面加/代表绝对路径,/代表tomcat之下的根目录
最前面有/就代表localhost:8080/
最前面不加/代表相对路径
区别最前面带斜杠和不带斜杠的区别
获取请求信息中文乱码问题
Tomcat 8.0解决了get乱码问题,但是post方式需要手动解决
post底层通过流拿到数据,设置流编码方式
获取参数前使用:
request.setCharacterEncoding("utf-8") |
|