MVC
MVC模式中、model是指业务模型、View是指用户界面、Controller则是指控制器、使用MVC目的是将M和V的实现代码分离、从而使同一个程序可以使用不同的表现形式。用于把前端页面的展现和后端业务分离
Mode业务型
对数据库的操作包含两大包内容
bean 对数据库表的模拟
dao 数据的增删改查操作
View用户界面
也叫视图 程序和用户交互的接口 相当于服务员 实现厨师和餐客之间的信息交流
Controller控制器
用于进行用户的交互 接受用户的请求 并对用户的请求做出响应
控制器中接受用户与界面交互时传过来的数据 根据数据业务逻辑来执行服务的调用 更新业务数据模型的状态 使得模型和实体分离
servlet概述(Controller)
Web容器、Http服务器和Servlet容器
HTTP 服务器负责接收用户请求和对用户的请求做出响应,主要的作用是解析。
Servlet 容器负责加载Servlet Class,并实现对它的管理。
Web 容器其实就是 HTTP 服务器 + Servlet 容器,因为单单 Servlet 容器没有解析 HTTP 请求、通信等相关功能。所以把 Tomcat、Jetty 等实现包含了 HTTP 服务器和 Servlet 容器的功能,称之为 Web 容器。
servlet三种实现方式
实现Servlet 接口
// Servlet的第一种实现方式
// 1、实现Servlet 接口
public class FirstController implements Servlet {
public FirstController() {
System.out.println("FirstController对象被创建了!");
}
static {
System.out.println("FirstController类被加载了");
}
private ServletConfig servletConfig;
//2、重写五个方法
//初始化方法 默认在第一次请求时加载 且只加载一次
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("FirstController这个Servlet被加载了!");
this.servletConfig = servletConfig;
}
//获得servletConfig对象
@Override
public ServletConfig getServletConfig() {
return servletConfig;
}
//服务方法 每次请求都会执行 Tomcat会传递过来request response对象
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("每次请求其实执行的都是这个方法");
}
//获取到当前Servlet介绍
@Override
public String getServletInfo() {
return "我是FirstController";
}
//销毁方法 在服务器关闭时会执行
@Override
public void destroy() {
System.out.println("FirstController被销毁了");
}
}
继承GenericServlet
// 注解实现
// 3、注册Servlet
@WebServlet("/second")
//1、继承GenericServlet
public class SecondController extends GenericServlet {
// 2、实现方法
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("我是SecondServlet方法");
servletRequest.getRequestDispatcher("index.jsp").forward(servletRequest, servletResponse);
}
}
继承HttpServlet*
该方式只能处理HTTP协议
// Servlet的第三种实现方式 一般都使用这种方式 只能处理HTTP协议
//3、注解 注册Servlet
@WebServlet("/third")
//1、继承HttpServlet
public class ThirdController extends HttpServlet {
//重写Service方法 request和response是由Tomcat传递过来的
// @Override
// protected void service(HttpServletRequest request, HttpServletResponse response)
// throws ServletException, IOException {
// System.out.println("ThirdController被调用了");
//
// //设置响应编码集 必须在out对象产生之前
// response.setCharacterEncoding("utf-8");
//
// PrintWriter out = response.getWriter();
// out.println("<html>");
// out.println("<head>");
// out.println("<title>Servlet输出的内容</title>");
// out.println("</head>");
// out.println("<body>");
// int i = (int) (Math.random() * 100 + 1);
// out.println("<h3>随机数是" + i + "<h3>");
// out.println("</body>");
// out.println("</html>");
// }
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("我是doGet请求");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("我是doPost请求");
}
三种请求处理方式
service
可以处理任何形式的请求
doGet
只能处理 get 请求
doPost
post请求只有四种 目前只接触到表单发送的 其余都是get请求
只能处理 post 请求
servlet体系结构

servlet加载流程及两种加载方式
加载流程


两种加载方式
加载流程
懒加载(默认)
servlet默认是懒加载模式 当用户第一次请求servlet时 servlet容器会加载 Servelt Class 产生这个类对象 调用初始化 **inti()**方法 调用service()方法
在后续的请求中 servlet容器不会再重复进行对象初始化了 直接会调用servlce方法
勤加载
勤加载方式 与懒加载不同的是 勤加载方式是在用户请求servlet 之前 服务器启动的时候 就开始加载 Servelt Class 其余和懒加载模式相同
Servlet生命周期*
servet容器的特点是 在所有浏览器中都用的是这个请求 即同一个请求在所有浏览器出来的结构相同
在这里插入图片描述
加载
分为懒加载和勤加载 其实就是servlet容器创建Servlet Class 的过程
初始化
servlet 容器会在浏览器第一次访问Servlet 或服务器启动时为该servlet 创建实例 服务器为Servlet创建实例后,会在第一时间调用init()方法,完成Servlet的初始化操作。注意这个init()方法在Servlet的一生中,只会被服务器调用一次。
服务
当Servlet容器接收到浏览器请求时,会去调用Servlet的service()方法来处理请求,而且每次请求的时候,服务器都会调用service()方法,并且创建新的ServletRequest和ServletResponse对象并传递给service()方法,所以该方法在Servlet的一生中会被调用多次。
销毁
当服务器关闭或者当前web应用被移出服务器时,Servlet会被销毁,在销毁之前,服务器会调用destroy()方法,可以把Servlet的“临终遗言“放在该方法中,例如把对某些资源的释放等代码放在destroy()方法中。
在servlet中使用内置对象

//在Servlet操纵九大内置对象
public class Test extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//servlet中不能调用pageContext对象
//request response 由tomcat提供
//session
HttpSession session = request.getSession();
//out
PrintWriter out = response.getWriter();
//application
ServletContext application = request.getServletContext();
//config
ServletConfig config = getServletConfig();
//exception
int i = 10 / 0;
//page
Object page = this;
}
}
ServletContext application = request.getServletContext();
//config
ServletConfig config = getServletConfig();
//exception
int i = 10 / 0;
//page
Object page = this;
}
}
本文围绕Java Servlet展开,介绍了MVC模式,将前端页面展现与后端业务分离。阐述了Servlet的三种实现方式、三种请求处理方式,还讲解了Servlet的体系结构、加载流程(懒加载和勤加载)、生命周期(加载、初始化、服务、销毁),以及在Servlet中使用内置对象。
727

被折叠的 条评论
为什么被折叠?



