servlet mvc、如何导入和使用 jar包

Servlet是Java中用于处理HTTP请求的服务器端程序,主要任务包括读取客户端数据、处理数据并生成响应。它们常用于收集表单输入、呈现数据库记录和动态创建网页。在Tomcat服务器中,Servlet部署涉及web.xml配置文件,其生命周期包括加载、初始化、服务和销毁四个阶段。此外,文章还提到了MVC设计模式,其中模型处理数据,视图展示数据,控制器协调两者。最后,文章讨论了HTTP请求和响应的结构以及ServletContext的作用。

一、什么是servlet?

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层简单地讲,这个servlet是运行在服务器上的一个小程序,用来处理服务器请求的.进一步,一般的网页程序,是由我们通过浏览器访问来实现的,在这个过程中,我们的浏览器发送访问请求,服务器接收请求,并对浏览器的请求作出相应的处理.这就是我们熟悉的B/S模型(浏览器-服务器模型).而servlet就是对请求作出处理的组件,运行于支持Java的应用服务器中.

二、使用servlet作用--可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

Servlet 执行以下主要任务:

  • 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
  • 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
  • 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
  • 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
  • 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

三、Servlet架构:

四、Servlet部署 

默认情况下,Servlet 应用程序位于路径 <Tomcat-installation-directory>/webapps/ROOT 下,且类文件放在 <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes 中。

如果您有一个完全合格的类名称 com.myorg.MyServlet,那么这个 Servlet 类必须位于 WEB-INF/classes/com/myorg/MyServlet.class 中。

现在,让我们把 HelloWorld.class 复制到 <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes 中,并在位于 <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/ 的 web.xml 文件中创建以下条目:

<web-app>      
    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>HelloWorld</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>
</web-app>  

 上面的条目要被创建在 web.xml 文件中的 <web-app>...</web-app> 标签内。在该文件中可能已经有各种可用的条目,但不要在意。

五、Servlet环境设置

就像任何其他的 Java 程序,需要通过使用 Java 编译器 javac 编译 Servlet,在编译 Servlet 应用程序后,将它部署在配置的环境中以便测试和运行。 

1、设置Java环境

2.设置web应用服务器,如Tomcat。下载地址:http://tomcat.apache.org/

(Tomcat服务器的配置和应用)​​​​​​s

六、mvc设计模式

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。

  • Model(模型) -- 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。模型与数据格式无关。
  • View(视图) --视图代表模型包含的数据的可视化。指用户看到并进行交互的界面。
  • Controller(控制器) -- 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。即接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。

简单流程模式:

jsp+servlet+mvc模式图:

web.xml配置文件

​
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>20181022MVC</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>ControllerServlet</display-name>
    <servlet-name>ControllerServlet</servlet-name>
    <servlet-class>com.igeek.mvc.controller.ControllerServlet</servlet-class>
  	<init-param>
  		<param-name>addUser</param-name>
  		<param-value>com.igeek.mvc.controller.AddUserController</param-value>
  	</init-param>
  	<init-param>
  		<param-name>deleteUser</param-name>
  		<param-value>com.igeek.mvc.controller.DeleteUserController</param-value>
  	</init-param>
  	<init-param>
  		<param-name>updateUser</param-name>
  		<param-value>com.igeek.mvc.controller.UpdateUserController</param-value>
  	</init-param>
  	<init-param>
  		<param-name>queryUser</param-name>
  		<param-value>com.igeek.mvc.controller.QueryUserController</param-value>
  	</init-param>
  	<init-param>
  		<param-name>addStu</param-name>
  		<param-value>com.igeek.mvc.controller.AddStuController</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>ControllerServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

​

Servlet生命周期

加载->初始化->服务->销毁->卸载
加载、卸载:Servlet容器自动处理,我们不用管
初始化:init(),该方法会在Servlet被加载并实例化之后执行
服务:service(),具体的实现是doGet doPost
销毁:destroy(),Servlet实例被系统回收时执行

init():第一次访问时被执行,只执行这一次
service():doGet doPost调用几次执行几次
destroy():关闭tomcat服务时,执行一次

jar包

java中的jar文件 ,装的是 .class 文件。它是一种压缩,和zip兼容,被称为jar包。JDK提供的许多类,也是以jar包的形式提供的。

在用的时候呢,你的文件里有很多个类,把这些类和他们的目录一起压缩到一个文件中给别人,会显得更专业,有条理。别人拿到这个jar包之后,只要让他的classpath 的设置中包含这个jar文件,java虚拟机,在装载类的时候,就会自动解压这个jar文件,并将其当成目录,然后在目录中查找我们所要的类及类的包名和所对应的目录的结构。

servlet jar包

要编译servlet,则类路径classpath中必须包括Servlet API 的相关类,如果使用的web容器是Tomcat,则这些类通常封装在在tomcat的lib目录中servlet-api.jar。上面的编译出的.class文件会出现在build的classes目录中,并有对应的包层级。

idea如何导入和引用jar包

由于 Servlet 是 JavaEE 下的技术标准,不是 JDK 的组成部分,所以在编译 Servlet 前,需要先引入 servlet-api.jar 包(在 Apache Tomcat 安装目录下的 lib 文件夹中提供了此 jar 包)。

1.选中项目(在Intellij中成为模块);

3.在弹出窗口左端选择库;

4.点击顶端的一个绿色的“+”号图标,选择Java;

5.在弹出的串口中选择Tomcat所在的目录,进入lib 目录里边,寻找servlet的api,jar包;

6.选中上述的Jar包。点击Apply即可。

7.查看导入是否成功:若显示以上包则表示导入成功。

Hello World实例:

// 导入必需的 java 库
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

// 扩展 HttpServlet 类
public class HelloWorld extends HttpServlet {
 
  private String message;

  public void init() throws ServletException
  {
      // 执行必需的初始化
      message = "Hello World";
  }

  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 设置响应内容类型
      response.setContentType("text/html");

      // 实际的逻辑是在这里
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
  }
  
  public void destroy()
  {
      // 。。。。。
  }
}

通过上节课的学习补充:

servlet 生命周期:

在第一次被用户创建时访问,在服务器关闭时销毁,在整个webapp运行中,Servlet对象只有一个。

注:1.启动服务器时,Servlet对象并没有被创建,如果希望在启动时创建,可在web.xml中加入参数该标签中填写的整数数字越小,优先级越高。

  2.不建议手动定义Sevlet对象的构造函数。

GenericSevlet

构建一个GenericSevlet抽象类,其中重写所有的Servlet接口的方法,并将service方法设置为abstract。在需要使用Servlet时可以继承GenericServlet,减少重写的代码量。

ServletContext

ServletContext在服务器启动时创建,服务器关闭时终止。

HTTP协议

请求协议包括四部分:

请求行

请求头

空白行

请求体

响应协议包括四部分:

状态行

响应头

空白行

响应体

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值