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的更多相关文章
随机推荐
- Django Admin 后台Admin继承UserAdmin增加用户密码不显示明文和用户登录不了的解决方法
Django后台Admin继承UserAdmin增加用户不显示明文方法 1.在 models.py 中用户表 # 导包规范-1.Python标准模块 from django.db import mod ...
- IDEA总结
1. 什么是idea? idea是Java开发软件 2. IDEA下载 https://www.jetbrains.com/idea/download/download-thanks.html?pla ...
- HTTP 请求URL中不能含有空格
如果含有空格 会报 不合法参数异常 正确做法是将其encode URLEncoder.encode(targetString, "utf-8").replaceAll(" ...
- (十二)数据库查询处理之Query Execution(1)
(十二)数据库查询处理之Query Execution(1) 1. 写在前面 这一大部分就是为了Lab3做准备的 每一个query plan都要实现一个next函数和一个init函数 对于next函数 ...
- 从零开始搞后台管理系统(2)——shin-server
shin 的读音是[ʃɪn],谐音就是行,寓意可行的后端系统服务,shin-server 的特点是: 站在巨人的肩膀上,依托KOA2.bunyan.Sequelize等优秀的框架和库所搭建的定制化 ...
- sql之对top语句理解
起因 事情的起因是在群里和大佬讨论问题,讨论select top x后加*的问题,这时突发奇想,想搞清楚这个看起来在sql中略显突兀的语句结构,就有了这篇文 先看例子 select * from 表 ...
- FreeBSD pkg安装软件时出现创建用户失败解决
问题示例:[1/1] Installing package...===> Creating groups.Creating group 'package' with gid '000'.===& ...
- WPF 基础 - 启动与退出及异常捕获
1. 若需要控制 exe 实例数量 bool ret; mutex = new System.Threading.Mutex(true, exename, out ret); if (!ret) { ...
- Codeforces Round #558 B2. Cat Party (Hard Edition)
题面: 传送门 题目描述: 题意:确定最大的x,使去除掉前x天的其中一天后,所有不同数字的数量相等. 题目分析: 可能是我太久没打cf了,水题都做不出来. 这道题的关键在于:要记录相同数量,的不同 ...
- Go语言中利用append巧妙的删除slice切片中的元素
package main import ( "fmt" ) //删除函数 func remove(s []string, i int) []string { return appe ...