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: 第二:然后需要 ...
随机推荐
- 水壶-[Kruskal重构树] [解题报告]
水壶 本来从不写针对某题的题解,但因为自己实在是太蠢了,这道题也神TM的恶心,于是就写篇博客纪念一下 H水壶 时间限制 : 50000 MS 空间限制 : 565536 KB 评测说明 : 2s,51 ...
- 在 Laravel 5 中集成七牛云存储实现云存储功能
本扩展包基于https://github.com/qiniu/php-sdk开发,是七牛云储存 Laravel 5 Storage版,通过本扩展包可以在Laravel 5中集成七牛云存储功能. 1 ...
- opencv——对象提取与测量
#include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespac ...
- OpenCV——滤波
常见滤波函数: 其中前3中为线性滤波,后2中为非线性滤波 参考资料:https://mp.weixin.qq.com/s/3maNqlTSkl6FQs_xqrs8Fg
- Html5多媒体相关的API---video
Html5多媒体相关的API---video 在HTML5中,新增了两个元素---video元素与audio元素,其中video元素专门用来播放网络上的视频或电影,而audio元素专门用来播放网络上的 ...
- 通过HttpWebRequest调用webService
调用远端接口,向远端接口写入一个xml文件(loginLog为xml的字符串).关键方法如下: public object InsertAuditLog(string loginLog) { //Ws ...
- php连接mysql...mysqli和mysql
mysql_connect()这一系列函数已经不推荐使用了,不安全. <?php $con = mysql_connect('localhost','root','');// 选择连接数据库系统 ...
- Linux下端口被占用确认
有时候关闭软件后,后台进程死掉,导致端口被占用.下面以JBoss端口8083被占用为例,列出详细解决过程. 解决方法: 1.查找被占用的端口 netstat -tln netstat -tln | g ...
- gdb中信号
信号(Signals) 信号是一种软中断,是一种处理异步事件的方法.一般来说,操作系统都支持许多信号.尤其是UNIX,比较重要应用程序一般都会处理信号.UNIX定义了许 多信号,比如SIGINT表示中 ...
- 开启Node.js的大门
其实也没什么好说的,简而言之,就是如何配置node.js环境,然后进行开发.博主最近比较堕落,觉得什么事情也没有就不知道想干什么,想融入一些事情又觉得没大神指引,于是自娱自乐开始自己玩node.js, ...