JAVAEE_Servlet_13_HttpServlet
HttpServlet
因为每次执行前端请求,都需要获取前端的请求方式,都需判断前端的请求方式和后端是否一致,随意这段代码就可以封装起来。
写一个HttpServlet类去继承GenericServlet,然后在这里面强制类型转换,获取前端请求方式,判断请求方式是get还是post,如果前端请求方式和后端不一致,那么提示错误信息。
以后的Servlet直接继承HttpServlet就可以了,如果需要get请求,那么久重写doGet()方法,如果需要post请求,那么久重写doPost方法就可以了,如果前端请求和后端不一致,那么就会自动报错,一致就会走子类重写后的方
法代码 :
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HttpServlet extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//强制类型转换
HttpServletRequest request=(HttpServletRequest) servletRequest;
HttpServletResponse response=(HttpServletResponse) servletResponse;
//再次调用service方法,将强制类型转换后的参数传进去,利用方法重载机制,重写一个service方法。
service(request,response);
}
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取前台的请求方式
String method=request.getMethod();
//判断请求方式,执行不同的方法
if(("GET").equals(method)){
doGet(request,response);
}else if(("POST").equals(method)){
doPost(request,response);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
//设置字符集,创建字符输出流
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
//输出错误提示信息
out.print("前端请求方式与后端不一致");
throw new RuntimeException("前端请求方式与后端不一致");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
//设置字符集,创建字符输出流
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
//输出错误提示信息
out.print("前端请求方式与后端不一致");
throw new RuntimeException("前端请求方式与后端不一致");
}
}
JAVAEE_Servlet_13_HttpServlet的更多相关文章
随机推荐
- Java8 关于stream.foreach()和stream.peek()的区别解析
该思考来源于日常工作中,特记此心得. 思考:如何快速将list中的每个item内部属性值改变并进行其他流体操作呢? 下面做个测试:如何先在list中统一改变某属性的值,然后再根据某个属性取出该属性值最 ...
- 将VMware虚拟机最小化到托盘栏
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可. 目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayco ...
- 图像分割 | Context Prior CPNet | CVPR2020
文章转自微信公众号:「机器学习炼丹术」 文章作者:炼丹兄(已授权) 作者联系方式:cyx645016617 论文名称:"Context Prior for Scene Segmentatio ...
- CMD(命令提示符)的基本操作(文件夹)
打开CMD窗口,接下来将介绍如何使用CMD来创建.删除.修改.查看文件夹(目录) ps:以下所有文件夹将统一写成目录 1.1 使用CMD创建空目录(为了更好的演示,本文皆以D盘为当前路径),命令如下: ...
- 381. O(1) 时间插入、删除和获取随机元素 - 允许重复
381. O(1) 时间插入.删除和获取随机元素 - 允许重复 LeetCode_381 题目详情 题解分析 代码实现 package com.walegarrett.interview; impor ...
- 快速查找未打补丁的exp
在windows DOS窗口下输入以下内容,输出为未打的补丁信息列表 systeminfo>vul.txt&(for %i in (KB977165 KB2160329 KB250366 ...
- NumPy 将停止支持 Python 2
NumPy 项目宣布将停止支持 Python 2.Python 核心团队已经决定在 2020 年停止支持 Python 2,而 NumPy 项目自 2010 年以来同时支持 Python 2 和 Py ...
- AtCoder Beginner Contest 192
A Star #include <cstdio> using namespace std; int n; int main() { scanf("%d", &n ...
- 「视频小课堂」ELK和Kafka是怎么就玩在一起成了日志采集解决方案文字版
视频地址:ELK和Kafka是怎么就玩在一起成了日志采集解决方案 视频文字版 今天呢我就带来了一期视频,主要就是讲ELK和Kafka之间的通讯关系通过对一张通讯图,和一些操作命令,让我们能更深入的去理 ...
- 去哪找Java练手项目?
经常有读者在微信上问我: 在学编程的过程中,看了不少书.视频课程,但是看完.听完之后感觉还是不会编程,想找一些项目来练手,但是不知道去哪儿找? 类似的问题,有不少读者问,估计是大部分人的困惑. 练手项 ...