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的更多相关文章

  1. Servlet课程0424(三) 通过继承HttpServlet来开发Servlet

    //这是第三种开发servlet的方法,通过继承httpservlet package com.tsinghua; import javax.servlet.http.*; import java.i ...

  2. servlet三种实现方式之三通过继承HttpServlet开发servlet

    servlet有三种实现方式: 1.实现servlet接口 2.继承GenericServlet 3.通过继承HttpServlet开发servlet 第三种: import java.io.*; i ...

  3. xxxservlet继承HttpServlet类

    "HttpServlet类被定义为抽象类,但是源码里面没有抽象方法.所以没有一定要求实现的方法.之所以定义为抽象类,是因为他继承了GenericServlet这个抽象类.并没有全部实现里面的 ...

  4. java一个类 继承HttpServlet 和实现Servlet区别

    java一个类 继承HttpServlet 和实现Servlet区别 servlet 是一个接口,如果实现这个接口,那么就必须实现接口里面定义的所有方法 而HttpServlet实现了servlet接 ...

  5. HelloServlet类继承HttpServlet利用HttpServletResponse对象

    HelloServlet类继承HttpServlet利用HttpServletResponse对象 HelloServlet类的doGet()方法先得到username请求参数,对其进行中文字符编码转 ...

  6. Servlet-通过继承HttpServlet类实现Servlet程序

    通过继承HttpServlet类实现Servlet程序(开发一般用) 一般在实际项目开发中,都是使用继承 HttpServlet类的方式实现Servlet程序 1,编写一个类去继承 HttpServl ...

  7. myeclipse实现Servlet实例(3) 通过继承HttpServlet接口实现

    (1) 在软件公司 90%都是通过该方法开发. //在HttpServlet 中,设计者对post 提交和 get提交分别处理   //回忆 <form action="提交给?&qu ...

  8. 编写一个Filter,除继承HttpServlet类外还需要( )。

    A.继承Filter 类 B.实现Filter 接口 C.继承HttpFilter 类 D.实现HttpFilter接口 解答:B

  9. Eclipse操作Servlet入门案例,创建类无法实现Servlet接口和继承HttpServlet类

    问题描述: 从昨天下午到今天中午,这个问题被缠绕了良久.百度了很多,却都没有一言命中要害. 首先,还是基于对Web的理解. 第一:建立的是Dynamic  Web   Project: 第二:然后需要 ...

随机推荐

  1. linux禁止非法用户试探登录

    当我们的linux主机一旦暴露在互联网上,就会遭受到来自网络上的一些非法用户的骚扰.如弱口令扫描,试探性登录:这些行为对linux主机构成一定的威胁.那怎样防范此类的攻击了,这里写了一个脚本,功能就是 ...

  2. CompletionService简讲

    背景 最近在项目中看到太多后台task中使用Executor框架,提交任务后,把future都一个个加入到list,再一个个get这些future的代码. 这个的问题在于一方面没有时限,可能会被某些运 ...

  3. Markdown基本语法规范

    1. 标题 #的个数即表示Hn, 一下依次从h1~h6.  也可在句尾添加同样个数的#(也可忽略) # This is H1 ## This is H2 ### This is H3 #### Thi ...

  4. PAT B1030 完美数列 (25 分)

    给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列. 输入格 ...

  5. python:'ascii' codec can't encode character

    python默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错,python没办法处理非ascii编码的, 此时需要自己设置python的默认编码,一般设置为u ...

  6. DQN(Deep Reiforcement Learning) 发展历程(二)

    目录 动态规划 使用条件 分类 求解方法 参考 DQN发展历程(一) DQN发展历程(二) DQN发展历程(三) DQN发展历程(四) DQN发展历程(五) 动态规划 动态规划给出了求解强化学习的一种 ...

  7. day67

    昨日回顾 1 orm 创建表,新增字段,修改,删除字段,不能创建数据库  -字段属性phone=models.CharField(max_length=64,null=True)  -null=Tru ...

  8. php实现远程网络文件下载到服务器指定目录(方法一)

    PHP实现远程网络文件下载到服务器指定目录(方法一) <?php function getFile($url, $save_dir = '', $filename = '', $type = 0 ...

  9. VMware 克隆多台Linux机器并配置IP

    1.查看并分配虚拟网络 我们首先要知道 VMware 三种网络模式的区别. ①.Bridged(桥接模式):就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信.在桥接的作用下,类似于把物理主机虚拟为 ...

  10. 《网络对抗》Exp7 网络欺诈防范

    20155336<网络对抗>Exp7 网络欺诈防范 实验内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 简单应用SET工具建立冒名网站 (1分 ...