Servlet + MVC

1. Servlet 基础

1.1 Servlet 简介

Servlet 是 JSP 的前身,它是在服务器上运行的小程序。一个 Servlet 就是一个 Java 类,并且可以通过 “请求-响应” 编程模型来访问的这个驻留在服务器内存例的 Servlet 程序。

1.2 Tomcat 容器等级

在这里插入图片描述

1.3 手工编写一个 Servlet

  1. 继承 HttpServlet
  2. 重写 doGet() 或者 doPost() 方法
  3. web.xml 中使用映射注册 Servlet,也可以用注解,如下所示
@WebServlet(name = "HelloServlet",urlPatterns = "/demo")
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>第一个Servlet小例子</h1>
<hr>
<a href="com.example.firstDemo/Servlet">Get方式请求Servlet</a>
<form action="com.example.firstDemo/Servlet" method="post">
    <input type="submit" value="Post方式请求Servlet"/>
</form>
</body>
</html>
Servlet.java
package com.example.firstDemo;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;

//注解形式注册 servlet
@WebServlet(name = "Servlet", value = "/com.example.firstDemo/Servlet")
/*同样可以采用在 web.xml 中注册 
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>Servlet</servlet-name>
        <servlet-class>com.example.firstDemo.Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/com.example.firstDemo/Servlet</url-pattern>
    </servlet-mapping>

</web-app>

*/
public class Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("处理Get()请求");
        PrintWriter out = response.getWriter();
        out.println("<strong>Hello Servlet!</strong>");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("处理Post()请求");
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<strong>Hello Servlet!</strong><br>");
    }
}

1.4 Servlet 执行流程和生命周期

在这里插入图片描述

  • Servlet 初始化后调用 init () 方法,一次性初始化。init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。
public void init() throws ServletException {
  // 初始化代码...
}
  • Servlet 调用 service() 方法来处理客户端的请求,并把格式化的响应写回给客户端。每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法由容器调用,service() 方法在适当的时候调用 doGet()doPost()doPut()doDelete() 等方法。
public void service(ServletRequest request,
					ServletResponse response) 
      throws ServletException, IOException{
}
    • doGet()方法:GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHODHTML 表单。
public void doGet(HttpServletRequest request,
                  HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代码
}
    • doPost()方法 :POST 请求来自于一个特别指定了 METHODPOSTHTML 表单。
public void doPost(HttpServletRequest request,
                   HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代码
}
  • Servlet 销毁前调用 destroy() 方法,它只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
    在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。
  public void destroy() {
    // 终止化代码...
  }
  • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

1.5 Servlet 与 JSP 内置对象

在这里插入图片描述

1.6 Servlet 获取表单数据

很多情况下,需要传递一些信息,从浏览器到 Web 服务器,最终到后台程序。浏览器使用两种方法可将这些信息传递到 Web 服务器,分别为 GET 方法和 POST 方法。

  • GET 方法 :向页面请求发送已编码的用户信息。页面和已编码的信息中间用 ? 字符分隔。GET 方法是默认的从浏览器向 Web 服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中。如果您要向服务器传递的是密码或其他的敏感信息,请不要使用 GET 方法。GET 方法有大小限制:请求字符串中最多只能有 1024 个字符。
http://www.test.com/hello?key1=value1&key2=value2
  • POST 方法: 不是把信息作为 URL 中 ? 字符后的文本字符串进行发送,而是把这些信息作为一个单独的消息。消息以标准输出的形式传到后台程序,您可以解析和使用这些标准输出。Servlet 使用 doPost() 方法处理这种类型的请求。

Servlet 处理表单数据,这些数据会根据不同的情况使用不同的方法自动解析

  • getParameter():调用 request.getParameter() 方法来获取表单参数的值。
  • getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框。
  • getParameterNames():得到当前请求中的所有参数的完整列表。

2. MVC

MVC 模型:MVC (Model 、View 、Controller),是软件开发过程中比较流行的设计思想。旨在分离模型、控制、视图。是一种分层思想的体现。在这里插入图片描述

  • Model(模型)表示应用程序核心(比如数据库记录列表),是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
  • View(视图)显示数据(数据库记录),是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
  • Controller(控制器)处理输入(写入数据库记录),是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

MVC 模式同时提供了对 HTMLCSSJavaScript 的完全控制。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值