BaseServlet 继承 httpServlet
BaseServlet 核心
package cn.core; import java.io.IOException;
import java.lang.reflect.Method; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* 1:继承HttpServlet让它成为Servlet<br>
* 2:声明它的抽象的则是指这个类不能配置到web.xml中去<br>
*/
public abstract class BaseServlet extends HttpServlet {
/**
* 3:直接重写service方法,以避免执行doGet/doPost分支
*/
@Override
public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 6:由于所有请求,都是先从这儿过去了,所以可以直接统一的设置请求编码和响应的类型
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
// 7:用户通过参数的形式通知调用哪一个方法?method=add调用add方法
// 解析出这个参数
String methodName = req.getParameter("method");
if (methodName == null || methodName.trim().equals("")) {
// 默认为exuecte
methodName = "execute";
}
// 8:再通过反射调用子类方法,可以使用this反射出子类。
// 反射出方法
try {
Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
// 执行调用
method.invoke(this, req,resp);
} catch (Exception e) {
throw new RuntimeException(e);
} } /**
* 4:开发一个默认的方法,如果用户没有指定执行哪一个方法,则默认就执行默认的这个方法
* 5:将这个方法修改成抽象的,以避免继承BaseServlet的类忘记开发execute
*/
public abstract void execute(HttpServletRequest req, HttpServletResponse resp) throws Exception;
} 方法测试
package cn.examples; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import cn.core.BaseServlet; public class PersonServlet extends BaseServlet {
// http://localhost:9999/mvc/person
@Override
public void execute(HttpServletRequest req, HttpServletResponse resp) throws Exception {
System.err.println("这是默认的execute...");
} // http://localhost:9999/mvc/person?method=addPerson
public void addPerson(HttpServletRequest req, HttpServletResponse resp) {
System.err.println("this is add...");
} // http://localhost:9999/mvc/person?method=upload
public void upload(HttpServletRequest req, HttpServletResponse resp) {
System.err.println("this is upload img...");
} // http://localhost:9999/mvc/person?method=del
public void del(HttpServletRequest rr, HttpServletResponse resp) {
System.err.println("this is delete...");
}
}
BaseServlet 继承 httpServlet的更多相关文章
- Servlet课程0424(三) 通过继承HttpServlet来开发Servlet
//这是第三种开发servlet的方法,通过继承httpservlet package com.tsinghua; import javax.servlet.http.*; import java.i ...
- servlet三种实现方式之三通过继承HttpServlet开发servlet
servlet有三种实现方式: 1.实现servlet接口 2.继承GenericServlet 3.通过继承HttpServlet开发servlet 第三种: import java.io.*; i ...
- xxxservlet继承HttpServlet类
"HttpServlet类被定义为抽象类,但是源码里面没有抽象方法.所以没有一定要求实现的方法.之所以定义为抽象类,是因为他继承了GenericServlet这个抽象类.并没有全部实现里面的 ...
- java一个类 继承HttpServlet 和实现Servlet区别
java一个类 继承HttpServlet 和实现Servlet区别 servlet 是一个接口,如果实现这个接口,那么就必须实现接口里面定义的所有方法 而HttpServlet实现了servlet接 ...
- HelloServlet类继承HttpServlet利用HttpServletResponse对象
HelloServlet类继承HttpServlet利用HttpServletResponse对象 HelloServlet类的doGet()方法先得到username请求参数,对其进行中文字符编码转 ...
- Servlet-通过继承HttpServlet类实现Servlet程序
通过继承HttpServlet类实现Servlet程序(开发一般用) 一般在实际项目开发中,都是使用继承 HttpServlet类的方式实现Servlet程序 1,编写一个类去继承 HttpServl ...
- myeclipse实现Servlet实例(3) 通过继承HttpServlet接口实现
(1) 在软件公司 90%都是通过该方法开发. //在HttpServlet 中,设计者对post 提交和 get提交分别处理 //回忆 <form action="提交给?&qu ...
- 编写一个Filter,除继承HttpServlet类外还需要( )。
A.继承Filter 类 B.实现Filter 接口 C.继承HttpFilter 类 D.实现HttpFilter接口 解答:B
- Eclipse操作Servlet入门案例,创建类无法实现Servlet接口和继承HttpServlet类
问题描述: 从昨天下午到今天中午,这个问题被缠绕了良久.百度了很多,却都没有一言命中要害. 首先,还是基于对Web的理解. 第一:建立的是Dynamic Web Project: 第二:然后需要 ...
随机推荐
- Nginx反向代理及简单负载均衡配置
nginx配置文件主要分为六个区域:main section.events section.http section.sever section.location section.upstream s ...
- luogu P2365 任务安排
嘟嘟嘟 如果常规dp,\(dp[i][j]\)表示前\(i\)个任务分\(j\)组,得到 \[dp[i][j] = min _ {k = 0} ^ {i - 1} (dp[k][j - 1] + (s ...
- PHP判断用户是否手机访问
自定义的函数如下: $agent = check_wap(); if( $agent ) { header('Location: http://www.nowamagic.net'); exit; } ...
- day41
今日内容: 1.完整查询语句 2.多表查询 3.子查询 1.完整查询语句: 首先对于昨天的学习补充一个复制表 示例:首先我在一个库中创建了一个t1表(id 为int类型 设置为主键 并且设置了自增描述 ...
- 第12章 GPIO输入—按键检测
第12章 GPIO输入—按键检测 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fi ...
- 【转】深入理解C++的动态绑定和静态绑定 & 不要重定义虚函数中的默认参数
为了支持c++的多态性,才用了动态绑定和静态绑定.理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误.需要理解四个名词:1.对象的静态类型:对象在声明时采用的类型.是在编译期确定的.2 ...
- # 2017-2018-2 20155319『网络对抗技术』Exp7:网络欺诈防范
2017-2018-2 20155319『网络对抗技术』Exp7:网络欺诈防范 一.原理与实践说明 1.实践目标 本实践的目标是:理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 2. ...
- 记一次SpringMVC碰到的坑
在SpringMVC中,我们Controller中接收比如表单的参数,只要保证方法的形参的名字和表单中input元素的的name一样就可以接收到参数. 但是,我开发的一 ...
- python基础学习1-列表使用
python 列表相关操作方法 namelist = ['a','b','c','d','1','2','3','4'] namelist1 = ['a','b','c','d','1','2','3 ...
- 【第十三课】监控Linux系统状态
目录 1.查看系统负载命令:w.uptime 2.vmstat详解 3.top动态查看负载 4.sar命令(监控网卡流量) 5.nload命令(监控网卡流量) 6.iostat iotop(监控IO性 ...