JavaWeb初识Servlet

一、Servlet:

处理请求和发送响应的过程是由Servlet来完成的,并且Servlet是为实现动态页面而衍生的东西。理解这个你得了解B/S模式(浏览器/服务器)与Http协议

B/S: 浏览器(Browser)/服务器(Server)。 浏览器通过网址来访问服务器,例:在浏览器中输入www.baidu.com,回车后浏览器就会显示百度,这个过程,就是Http的Request(请求)/Response(响应);

你请求了这个网址,所以浏览器就会反馈一个百度页面给你!(解释:这个过程就是请求响应);

B/S模式优点

①:更新简洁,多设备同步,对开发人员只需要更改服务器的内容就行,但是对用户而言只需要刷新浏览器即可。

②:多设备同步,所有数据都在网上,只要能够使用浏览器即可使用。

B/S模式缺点

①:性能较低,相比于客户端应用性能低,但是随着硬件性能的提升,这个差距在缩小。

②:浏览器兼容,处理低版本的浏览器显示问题一直是开发人员头疼的问题之一,移动设备兼容性较好。

补充C/S模式

C/S:客户端(Client)/服务器(Server)。指的是客户端与服务器的意思(很常见);例如网络游戏:地下城与勇士,英雄联盟,穿越火线等很多;

C/S模式优点

①:性能较高,可以将一部分的计算机工作放在客户端上,这样服务器只需要处理数据即可。

②:界面炫酷,视觉冲击大,客户端可以使用更多系统提供的效果,做出更为炫目的效果。

C/S模式缺点

①:更新软件,如果推出了新版本,不更新客户端无法使用(部分)

②:不同设备访问,如果使用其他的电脑,没有安装客户端的话就无法登录软件。

二、Servlet生命周期

①:实例化:  Servlet容器创建Servlet实例;

②:初始化:  该容器调用init()方法;

③:请求处理:如果请求Servlet,则容器调用service()方法;(doGet/doPost...;补充: 如果Servlet里面写service方法则会根据请求自动分配请求方法:例如:get请求则会分配doGet方法,以此类推)

④:服务终止:销毁实例之前调用destroy()方法;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {
  
public MyServlet() { System.out.println("我是第一个执行的方法..."+this+"访问此servlet,我只执行一次,后面再访问我也不会执行!如果在web.xml中配置了 <load-on-startup>1<load-on-startup>我则会在启动时执行"); } //初始化参数用的 @Override public void init(ServletConfig config) throws ServletException { System.out.println("我是初始化方法...也是第二个执行的方法"); } //用户来分配请求用的(传递过来的请求有可能是get请求还有可能post请求) @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("我是用来分配请求的service()...我是第三个执行的方法"); } //销毁方法 @Override public void destroy() { System.out.println("销毁方法....我是关闭服务时才执行的方法"); } }

补充

  <servlet>
      <servlet-name>myservlet</servlet-name>
      <servlet-class>com.xkrj.controller.MyServlet</servlet-class>
      <!--如果加下面这段,则第一个执行的方法不需要访问 /ms路径,如果没有加则需要访问路径才会执行第一个方法哦-->
      <!-- <load-on-startup>1</load-on-startup> -->
  </servlet>
  <servlet-mapping>
      <servlet-name>myservlet</servlet-name>
      <url-pattern>/ms</url-pattern>
  </servlet-mapping>

三、Servlet编写(Maven工程):

①:创建一个Maven工程

②:给项目起一个名字

③:一定配置好这俩小东西哦

④:等待Maven加载完成

⑤:准备工作

⑥:如何创建两个文件夹

⑦:开始项目代码编写(包名可以和我的不一样,但是最好和我的一样,省的出错🤣,等写习惯了可以随意)

⑧:编写代码:继承Http协议,重写两个方法;注意:两个重写方法的调用哦!!!

package com.laugh.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class myservlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

⑨:给Tomcat加入项目

⑩:配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         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">
  <!--我这个头是新的-->
  <!--我是提供 myservlet 使用的哦;-->
  <servlet>
    <servlet-name>laugh</servlet-name>
    <servlet-class>com.laugh.servlet.myservlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>laugh</servlet-name>
    <url-pattern>/laugh</url-pattern>
  </servlet-mapping>



</web-app>

11:编写myservlet文件

package com.laugh.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class myservlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        PrintWriter writer = resp.getWriter();
        writer.print("<h1>我进入了Helloservlet里面了</h1>");
        System.out.println("欧克了");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

12:运行项目,查看结果

13.运行结束😘😘

posted @ 2021-11-23 10:24  Laugh"  阅读(80)  评论(0编辑  收藏  举报