JavaWeb概念
javaweb:所有由java编写的可以通过浏览器访问的程序的总称。
javaweb是基于请求和响应来开发的。
请求:Request,是指客户端(浏览器)给服务器(Tomcat)发送数据。
响应:Response,服务器给客户端回传数据。
请求与响应的关系:请求和响应是成对出现的,有请求就有响应。
Web资源的分类
web资源按实现的技术和呈现的效果的不同,分为静态资源和动态资源。
静态资源:html、css、js、txt文本、mp4视频、jpg图片等等
动态资源:jsp页面、Servlet程序
Tomcat端口号
tomcat默认端口号:8080
apache-tomcat-8.0.50\conf\server.xml文件可修改默认端口号
http默认端口号:80
https默认端口号:443(浏览器会自动补全)
web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是这样的容器。一个服务器可以多个容器。Web容器负责将HTTP请求转换为HttpServletRequest对象。
Servlet
1、Servlet是JavaEE规范之一,规范就是接口。
2、Servlet是JavaWeb三大组件之一,三大组件为:Servlet程序、Filter过滤器、Listener监听器。
3、Servlet是运行在服务器上的一个java小程序,可以接受客户端发送过来的请求并发送响应数据给客户端。
手动实现Servlet程序:
1、编写一个类去实现Servlet 接口
2、实现service 方法,处理请求,并响应数据
3、到web.xml 中去配置servlet 程序的访问地址
1 |
|
Servlet的生命周期:
1、加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet
2、创建:通过调用Servlet的构造函数来创建一个Servlet实例
3、初始化:通过调用Servlet的init()方法来完成初始化工作,ServletConfig对象读取web.xml获取初始化参数,对Servlet进行初始化
4、处理客户请求:Servlet创建后就可以处理请求,当有新的客户端请求时,Web容器都会创建一个新的线程来处理该请求。接着调用Servlet的Service()方法来响应客户端请求(Service方法根据请求的method属性来调用doGet()和doPost())
5、卸载:容器在卸载Servlet之前需要调用destroy()方法,让Servlet释放其占用的资源。
通过继承HttpServlet实现Servlet程序:一般在实际开发中使用此方式
1、编写一个类去继承HttpServlet类
2、根据业务需求重写doGet 或 doPost 方法
3、在web.xml中配置servlet程序的访问地址
ServletConfig类的作用:
1、获取 Servlet 程序的别名 servlet-name的值;
2、获取初始化参数 init-param;
3、获取ServletContext 对象;
ServletContext:
1、ServletContext 是一个接口,它表示Servlet 上下文对象
2、一个web 工程,只有一个ServletContext 对象实例。
3、ServletContext 对象是一个域对象。
4、ServletContext 是在web 工程部署启动的时候创建。在web 工程停止的时候销毁。
什么是域对象?
域对象,是可以像Map 一样存取数据的对象,叫域对象。
这里的域指的是存取数据的操作范围,整个web 工程。
存数据 取数据 删除数据
Map put() get() remove()
域对象 setAttribute() getAttribute() removeAttribute()
ServletContext 类的四个作用
1、获取web.xml 中配置的上下文参数context-param
2、获取当前的工程路径,格式: /工程路径
3、获取工程部署后在服务器硬盘上的绝对路径
4、像Map 一样存取数据
请求的HTTP协议格式
GET请求
1、请求行
(1) 请求的方式GET
(2) 请求的资源路径[+?+请求参数]
(3) 请求的协议的版本号HTTP/1.1
2、请求头
key : value 组成不同的键值对,表示不同的含义。
POST请求
1、请求行
(1) 请求的方式POST
(2) 请求的资源路径[+?+请求参数]
(3) 请求的协议的版本号HTTP/1.1
2、请求头
1) key : value 不同的请求头,有不同的含义
空行
3、请求体===>>> 就是发送给服务器的数据
GET 请求有哪些:
1、form 标签method=get
2、a 标签
3、link 标签引入css
4、Script 标签引入js 文件
5、img 标签引入图片
6、iframe 引入html 页面
7、在浏览器地址栏中输入地址后敲回车
POST 请求有哪些:
8、form 标签method=post
响应的HTTP协议格式
1、响应行
(1) 响应的协议和版本号
(2) 响应状态码
(3) 响应状态描述符
2、响应头
(1) key : value 不同的响应头,有其不同含义
空行
3、响应体—->>> 就是回传给客户端的数据
常见的响应码:
200 请求成功
302 表示请求重定向
404 表示服务器已经收到,但是请求的数据不存在
500 表示服务器已经收到,但是服务器内部错误
MMIE类型说明
MIME是HTTP协议中的数据类型
HttpServletRequest类
每次只要有请求进入Tomcat 服务器,Tomcat 服务器就会把请求过来的HTTP 协议信息解析好封装到Request 对象中。然后传递到service 方法(doGet 和doPost)中给我们使用。我们可以通过HttpServletRequest 对象,获取到有请求的信息。
HttpServletRequest常用方法:
i. getRequestURI() 获取请求的资源路径
ii. getRequestURL() 获取请求的统一资源定位符(绝对路径)
iii. getRemoteHost() 获取客户端的ip 地址
iv. getHeader() 获取请求头
v. getParameter() 获取请求的参数
vi. getParameterValues() 获取请求的参数(多个值的时候使用)
vii. getMethod() 获取请求的方式GET 或POST
viii. setAttribute(key, value); 设置域数据
ix. getAttribute(key); 获取域数据
x. getRequestDispatcher() 获取请求转发对象
1 |
|
1 | public class HelloServlet3 extends HttpServlet { |
请求的转发
服务器收到请求后,从一个资源跳转到另一个资源的操作。
特点:1、浏览器地址栏没有变化
2、是一次请求
3、共享Request域中的数据
4、可以转发到WEB-INF目录下
5、不可以访问工程外的资源
可能会造成表单的多次提交。
1 | public class Servlet1 extends HttpServlet { |
base标签
设置页面相对路径工作时参照的路径
1 |
|
HttpServletResponse类
HttpServletResponse 类和HttpServletRequest 类一样。
每次请求进来,Tomcat 服务器都会创建一个Response 对象传递给Servlet 程序去使用。
HttpServletRequest 表示请求过来的信息,HttpServletResponse 表示所有响应的信息。
两个输出流:(同时只能使用一个)
字节流:getOutputStream(); 常用于下载,传递二进制数据
字符流:getWriter(); 常用于回传字符串
1 | public class ResponseIOServlet extends HttpServlet { |
请求的重定向
请求重定向,是指客户端给服务器发请求,然后服务器通过响应头告诉客户端,并提供一个新的地址,然后客户端去新地址访问,叫请求重定向(因为之前的地址可能已经被废弃)。可以解决表单的多次提交问题。
1 | public class ResponseIOServlet extends HttpServlet { |
JavaEE项目的三层架构
分层的目的是为了解耦。解耦是为了降低代码的耦合度,方便项目后期的维护和升级。
1、MVC 概念
MVC 全称:Model 模型、View 视图、Controller 控制器。
MVC 最早出现在JavaEE 三层中的Web 层,它可以有效的指导Web 层的代码如何有效分离,单独工作。
Model 模型:将与业务逻辑相关的数据封装为具体的JavaBean 类,其中不掺杂任何与数据处理相关的代码——JavaBean/domain/entity/pojo。
View 视图:只负责数据和界面的显示,不接受任何与显示数据无关的代码,便于程序员和美工的分工合作——JSP/HTML。
Controller 控制器:只负责接收请求,调用业务层的代码处理请求,然后派发页面,是一个“调度者”的角色——Servlet。转到某个页面。或者是重定向到某个页面。
MVC 是一种思想,MVC 的理念是将软件代码拆分成为组件,单独开发,组合使用(目的还是为了降低耦合度)。