Javaサーブレット達成し、転送、リダイレクト

まず、インタフェースサーブレットを実装

package com.example.demo.servlet;

import javax.servlet.*;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet(name = "myServlet", urlPatterns = "/myServlet",initParams = {
        @WebInitParam(name = "p1", value = "param1"),
        @WebInitParam(name = "p2", value = "param2")
})
public class MyServlet implements Servlet {

    private  ServletConfig config;

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.err.println("初始化Servlet。。。");
        this.config=servletConfig;
        String name=config.getServletName();
        System.err.println("Servlet别名:"+name);
        System.err.println("初始化参数1:"+config.getInitParameter("p1"));
        System.err.println("初始化参数2:"+config.getInitParameter("p2"));
    }

    @Override
    public ServletConfig getServletConfig() {
        System.err.println("获取Servlet配置。。。");
        return config;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.err.println("处理业务。。。");
        //防止中文乱码
        servletResponse.setContentType("text/html;charset=utf-8");
        //写出到浏览器
        servletResponse.getWriter().write("myServlet...厉害了");
    }

    @Override
    public String getServletInfo() {
        System.err.println("获取Servlet信息。。。");
        return "我是Servlet信息";
    }

    @Override
    public void destroy() {
        System.err.println("销毁Servlet。。。");
    }
}

// localhostを::81 /がmyservletプロジェクトは、httpリクエストのパスを実行します 。ブラウザの結果:
ここに画像を挿入説明
コンソールは結果を印刷:

初期化サーブレット。
サーブレット別名:がmyservlet
初期化パラメータ1:PARAM1
初期化パラメータ2:PARAM2の
処理動作。

第二に、継承されたのHttpServletクラス

package com.example.demo.servlet;

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

@WebServlet(name = "firstServlet", urlPatterns = "/firstServlet")
public class FirstServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //防止中文乱码
        response.setContentType("text/html;charset=utf-8");
        //写出到浏览器
        response.getWriter().write("firstServlet...厉害了");
    }

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

// localhostを::81 / firstServletプロジェクト、訪問のhttpを実行します。ブラウザの結果:
ここに画像を挿入説明

第三に、リダイレクトとフォワード

1、リダイレクト

package com.example.demo.servlet;

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

@WebServlet(name = "firstServlet", urlPatterns = "/firstServlet")
public class FirstServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //重定向到http://localhost:81/myServlet(下面两句话是一个意思)
//        response.sendRedirect("myServlet");
        response.sendRedirect("http://localhost:81/myServlet");
    }

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

リクエストのhttp:// localhostを:81 / firstServlet 。ルックの開発ツールは、2つの要求を行って発見しました。まず要求firstServlet、再度要求がmyservlet。
ここに画像を挿入説明
コンソール:

初期化サーブレット。
サーブレット別名:がmyservlet
初期化パラメータ1:PARAM1
初期化パラメータ2:PARAM2の
処理動作。
処理事業。

前方2、

package com.example.demo.servlet;

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

@WebServlet(name = "firstServlet", urlPatterns = "/firstServlet")
public class FirstServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //转发到http://localhost:81/myServlet
        request.getRequestDispatcher("myServlet").forward(request,response);
    }

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

リクエストのhttp:// localhostを:81 / firstServlet 。ルック開発ツール、私たちは要求されたfirstServletを見つけましたが、要求の内容は、がmyservletを返します。
ここに画像を挿入説明
返信内容:
ここに画像を挿入説明
リダイレクトが外部リソースにアクセスするためには、転送することはできません。ここではBaiduにリダイレクト。

package com.example.demo.servlet;

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

@WebServlet(name = "firstServlet", urlPatterns = "/firstServlet")
public class FirstServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //重定向到百度
        response.sendRedirect("https://www.baidu.com/");
    }

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

ブラウザの結果
ここに画像を挿入説明

公開された17元の記事 ウォンの賞賛1 ビュー313

おすすめ

転載: blog.csdn.net/weixin_43424932/article/details/104014186