zoukankan      html  css  js  c++  java
  • 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.运行结束

    生在内卷,你卷我也卷。 愿与诸君共勉!
  • 相关阅读:
    穷举
    菱形
    docker安装cloudera manager,切换cloudera-scm用户报错can not open session
    修改cloudera manager的端口号
    postgresql拓展if、ifnull、group_concat函数
    clion调试postgresql
    Java面向切面原理与实践
    Spring-boot非Mock测试MVC,调试启动tomcat容器
    spring-cloud-feign 使用@RequetParam报错QueryMap parameter must be a Map: class java.lang.String
    linux虚拟机拓展大小
  • 原文地址:https://www.cnblogs.com/superyonng/p/15591992.html
Copyright © 2011-2022 走看看