tomcat
一、回顾
1.软件架构:c/s b/s
2.资源分类:动态资源 静态资源
3.网络通信三要素:ip地址、端口、协议
4.协议:tcp、udp、http
二、web服务器
1.tomcat weblogic websphere jboss
2.tomcat安装、卸载、启动、关闭
3.tomcat配置 server.xml 三个端口
4.tomcat部署(练习)
(1)直接部署
(2)在server.xml中配置<context>标签
(3)在conf中写xml文件
5.web项目的目录结构
6.idea集成tomcat(练习)
Servelt
一、快速入门(练习)
1.创建JAVAEE项目(模块)
2.定义一个类,实现Servlet接口
3.实现接口中的方法
4.配置servlet
二、请求——响应的全过程
1.客户端(浏览器)发送请求
2.服务器接收请求,提取请求的URL
3.根据URL获取web应用,找到应用中的web.xml文件
4.根据URL找到<url-pattern>,找到<servlet-name>
5.根据<servlet-name>,找到<servlet-class>
6.判断服务器内存中是否有当前的servlet对象。如果没有,使用反射创建该类的一个对象。如果有,直接使用该对象。
7.该对象执行service方法。
8.服务器以流的形式把结果写到客户端。
三、servlet的生命周期(练习)
1.init:初始化servlet,创建servlet对象的时候执行的,只执行一次
通过load-on-startup控制创建servlet的时机,>=0服务器启动创建,否则第一次访问创建
2.service
3.destory:销毁servlet,正常关闭服务器时执行,只执行一次。
四、servlet3.0新特性:通过注解@WebServlet设置路径(练习)
五、tomcat在idea中的相关配置
1.idea会为每一个tomcat部署的项目单独建立一份配置文件。通过控制台的Using CATALINA_BASE来找
2.tomcat真正访问的是部署的项目,不是工作空间的项目。
3.WEB-INF下的文件不能被浏览器直接访问。(练习)
六、Servlet体系
Servlet
----> GenericServlet(将Servlet接口中其他方法做了空实现,只留Service方法)
----> HttpServlet(将HTTP协议做了封装,重写doget,dopost)
七、urlpattern配置
1.可以配置多个路径 {"/XXX","/XXX"....}
2.可以配置多层路径 "/XXX/XXX...."
3.*是通配符,代表任意路径 "/XXX/*" "*.XXX"
Http
1.特点:基于TCP/IP,默认端口80,一次请求对应一次响应,不同的请求之间相互独立。
2.请求消息的格式:请求行、请求头、请求空行、请求体(只有POST请求有)
get请求参数在请求行中,post请求参数在请求体中。
POST /login.html HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/login.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
username=zhangsan
3.响应消息的格式
Request
1.request是由服务器创建的,封装了http请求的数据。
2.ServletRequest ----> HttpServletRequest ----> RequestFacade(tomcat实现的)
3.Request里的方法。
(1)练习获取请求行的8个方法
String getMethod()
String getContextPath()
String getServletPath()
String getQueryString()
String getRequestURI()
StringBuffer getRequestURL()
String getProtocol()
String getRemoteAddr()
(2)练习遍历请求头的所有数据
Enumeration<String> getHeaderNames()
(3)练习获取浏览器版本
getHeader("user-agent")
(4)练习防盗链
getHeader("referer")
(5)练习获取请求体数据 ①BufferedReader getReader() ②br.readline()
(6)练习获取参数的四个通用方法
String getParameter(String name)
String[] getParameterValues(String name)
Enumeration<String> getParameterNames()
Map<String,String[]> getParameterMap()
(7)练习解决中文乱码:在获取参数前加request.setCharacterEncoding("utf-8");
(8)练习请求转发: request.getRequestDispatcher("路径").forward(request,response);
(9)request共享域
1. void setAttribute(String name,Object obj):存储数据
2. Object getAttitude(String name):通过键获取值
3. void removeAttribute(String name):通过键移除键值对
(10)练习BeanUtils
1. setProperty()
2. getProperty()
3. populate(Object obj , Map map)