JavaWeb-Servlet技术

JavaWeb-Servlet技术,第1张

文章目录
  • serlvet技术
    • 一、什么是serlvet
    • 二、第一个servlet程序
      • 一)手动实现 servlet 程序
      • 二)url 地址到 Servlet 程序的访问
      • 三)Servlet 的生命周期
      • 四)GET 和 POST 请求的分发处理
      • 五)通过继承HttpServlet实现Servlet程序
      • 六)使用 IDEA 创建 Servlet 程序

serlvet技术 一、什么是serlvet

1、Servlet 是 JavaEE 规范之一。规范就是接口
2、Servlet 就 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。
3、Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。


二、第一个servlet程序 一)手动实现 servlet 程序

1、编写一个类去实现 Servlet 接口
2、实现 service 方法,处理请求,并响应数据
3、到 web.xml 中去配置 servlet 程序的访问地址

package com.blue.serlvet;

import jakarta.servlet.*;

import java.io.IOException;

/**
* @author wxs_blue
* @create 2022-04-22 21:03
*/
public class HelloServlet implements Servlet { //1.实现Serlvet接口

   @Override
   public void init(ServletConfig servletConfig) throws ServletException {

   }

   @Override
   public ServletConfig getServletConfig() {
       return null;
   }

   /**
    * service方法是专门来处理请求和响应
    * @param servletRequest
    * @param servletResponse
    * @throws ServletException
    * @throws IOException
    */
   
   //2.实现 service 方法,处理请求,并响应数据
   @Override
   public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
       System.out.println("Hello Servlet 被访问了");
   }

   @Override
   public String getServletInfo() {
       return null;
   }

   @Override
   public void destroy() {

   }
}

3、配置 web.xml


<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">

	
    <servlet>
    	
        <servlet-name>HelloServletservlet-name>
        
        <servlet-class>com.blue.serlvet.HelloServletservlet-class>
    servlet>
    
    
    <servlet-mapping>
    	
        <servlet-name>HelloServletservlet-name>
        
        <url-pattern>/hellourl-pattern>
    servlet-mapping>
web-app>

此时运行

此时出现的是【index.jsp】中的内容

我们在浏览器地址栏中添加【】标签中的地址,我这是hello,并进行访问

此时去IDEA中可以看到【service 】方法已经被执行

二)url 地址到 Servlet 程序的访问

三)Servlet 的生命周期
package com.blue.serlvet;

import jakarta.servlet.*;

import java.io.IOException;

/**
 * @author wxs_blue
 * @create 2022-04-22 21:03
 */
public class HelloServlet implements Servlet {


    public HelloServlet() {
        System.out.println("1,构造器方法");
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("2,初始化方法");
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }


    /**
     * service方法是专门来处理请求和响应
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("3,--> Hello Servlet 被访问了");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
    System.out.println("4,销毁方法");
    }


}

执行结果

一、执行 Servlet 构造器方法
二、执行 init 初始化方法
第1、2步,是在第一次访问,的时候创建 Servlet 程序会调用。

三、执行 service 方法
第3步,每次访问都会调用。

四、执行 destroy 销毁方法
第4步,在 web 工程停止的时候调用。

四)GET 和 POST 请求的分发处理

通过【form】表单的【method】来区分是【get】请求还是【post】请求

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello  Serlvettitle>
head>
<body>

<form action="http://localhost:8080/JavaWebTest/hello" method="get">
    <input type="submit" value="提交">
form>

body>
html>
package com.blue.serlvet;

import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;

import java.io.IOException;

/**
 * @author wxs_blue
 * @create 2022-04-22 21:03
 */
public class HelloServlet implements Servlet {


    public HelloServlet() {
        System.out.println("1,构造器方法");
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("2,初始化方法");
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }


    /**
     * service方法是专门来处理请求和响应
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("3,--> Hello Servlet 被访问了");
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        String method = httpServletRequest.getMethod();
       //输出得到的method方法名
        System.out.println(method);

//        if("GET".equals(method)){
//            doGet();
//        }else if("POST".equals(method)){
//            doPost();
//        }
    }

    /**
     * 做 get 请求的 *** 作
     */
    public void doGet(){
        System.out.println("get 请求");
        System.out.println("get 请求");
    }
    /**
     * 做 post 请求的 *** 作
     */
    public void doPost(){
        System.out.println("post 请求");
        System.out.println("post 请求");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
    System.out.println("4,销毁方法");
    }


}


结果

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello  Serlvettitle>
head>
<body>

<form action="http://localhost:8080/JavaWebTest/hello" method="post">
    <input type="submit" value="提交">
form>

body>
html>

结果

五)通过继承HttpServlet实现Servlet程序

一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。
1、编写一个类去继承 HttpServlet 类
2、根据业务需要重写 doGet 或 doPost 方法
3、到 web.xml 中的配置 Servlet 程序的访问地址

package com.blue.serlvet;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

/**
 * @author wxs_blue
 * @create 2022-04-24 21:01
 */
public class HelloServlet2 extends HttpServlet { //1.继承 HttpServlet 类

//    2.重写doGet() doPost()方法
    /**
     * doGet() 在 get 请求的时候调用
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doGet(req, resp);
        System.out.println("HelloServlet2 的 doGet 方法");
    }

    /**
     * doPost() 在 post 请求的时候调用
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doPost(req, resp);
        System.out.println("HelloServlet2 的 doPost 方法");
    }
}


3.配置web.xml(我这里配置成hello2)


<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">


    <servlet>
        <servlet-name>HelloServlet2servlet-name>
        <servlet-class>com.blue.serlvet.HelloServlet2servlet-class>
    servlet>
    
    <servlet-mapping>
        <servlet-name>HelloServlet2servlet-name>
        <url-pattern>/hello2url-pattern>
    servlet-mapping>
web-app>

运行结果

六)使用 IDEA 创建 Servlet 程序

【更新ing…】

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/729019.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存