BaseServlet 继承 httpServlet

BaseServlet   核心

 1 package cn.core;
 2
 3 import java.io.IOException;
 4 import java.lang.reflect.Method;
 5
 6 import javax.servlet.ServletException;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10
11 /**
12  * 1:继承HttpServlet让它成为Servlet<br>
13  * 2:声明它的抽象的则是指这个类不能配置到web.xml中去<br>
14  */
15 public abstract class BaseServlet extends HttpServlet {
16     /**
17      * 3:直接重写service方法,以避免执行doGet/doPost分支
18      */
19     @Override
20     public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
21         // 6:由于所有请求,都是先从这儿过去了,所以可以直接统一的设置请求编码和响应的类型
22         req.setCharacterEncoding("UTF-8");
23         resp.setContentType("text/html;charset=UTF-8");
24         // 7:用户通过参数的形式通知调用哪一个方法?method=add调用add方法
25         // 解析出这个参数
26         String methodName = req.getParameter("method");
27         if (methodName == null || methodName.trim().equals("")) {
28             // 默认为exuecte
29             methodName = "execute";
30         }
31         // 8:再通过反射调用子类方法,可以使用this反射出子类。
32         // 反射出方法
33         try {
34             Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
35             // 执行调用
36             method.invoke(this, req,resp);
37         } catch (Exception e) {
38             throw new RuntimeException(e);
39         }
40
41     }
42
43     /**
44      * 4:开发一个默认的方法,如果用户没有指定执行哪一个方法,则默认就执行默认的这个方法
45      * 5:将这个方法修改成抽象的,以避免继承BaseServlet的类忘记开发execute
46      */
47     public abstract void execute(HttpServletRequest req, HttpServletResponse resp) throws Exception;
48 }

方法测试
 1 package cn.examples;
 2
 3 import javax.servlet.http.HttpServletRequest;
 4 import javax.servlet.http.HttpServletResponse;
 5
 6 import cn.core.BaseServlet;
 7
 8 public class PersonServlet extends BaseServlet {
 9     // http://localhost:9999/mvc/person
10     @Override
11     public void execute(HttpServletRequest req, HttpServletResponse resp) throws Exception {
12         System.err.println("这是默认的execute...");
13     }
14
15     // http://localhost:9999/mvc/person?method=addPerson
16     public void addPerson(HttpServletRequest req, HttpServletResponse resp) {
17         System.err.println("this is add...");
18     }
19
20     // http://localhost:9999/mvc/person?method=upload
21     public void upload(HttpServletRequest req, HttpServletResponse resp) {
22         System.err.println("this is upload img...");
23     }
24
25     // http://localhost:9999/mvc/person?method=del
26     public void del(HttpServletRequest rr, HttpServletResponse resp) {
27         System.err.println("this is delete...");
28     }
29 }
时间: 2024-10-22 20:49:21

BaseServlet 继承 httpServlet的相关文章

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

//这是第三种开发servlet的方法,通过继承httpservlet package com.tsinghua; import javax.servlet.http.*; import java.io.*; public class HelloHttp extends HttpServlet{ //处理get请求 //req用于获得客户端(浏览器)的信息 //res用于向 客户端(浏览器)返回信息 public void doGet(HttpServletRequest req, HttpSe

前端form标签发送post请求,服务器用Java类继承HttpServlet,并返回数据

1.form表单提交: <form action="http://localhost:8080/test/Login" method="post"> 用户:<input type="text" name="username"/><br/> 密码:<input type="password" name="password"/><br/&

HelloServlet类继承HttpServlet利用HttpServletResponse对象

HelloServlet类的doGet()方法先得到username请求参数,对其进行中文字符编码转换,然后判断username是否为空,如果为空就返回403响应状态代码,否则就通过HttpServletResponse对象的getWriter()方法得到一个PrinterWriter对象,然后通过PrintWriter对象来输出HTML文档 HelloServlet.java package com.demo.servlet; import javax.servlet.ServletExcep

Eclipse项目迁移到MyEclipse后,继承HttpServlet报错问题

网上好多说法,比如要去对比eclipse和myeclipse的.project文件等等,但我的问题就是Libraries没有导入tomcat,导入之后,报错就消失了. 这里没有给出导入方法,只是给遇到问题的朋友多一个解决思路. 原文地址:https://www.cnblogs.com/BaleW/p/8151959.html

java 无法继承 HttpServlet类

在 WEB-INF 下的 lib 目录下 手动手动导入  servlet-api.jar 并添加到 项目中 就OK 了 servlet-api.jar 是在 原文地址:https://www.cnblogs.com/xxing/p/11777212.html

Java中反射机制详解

序言 在学习java基础时,由于学的不扎实,讲的实用性不强,就觉得没用,很多重要的知识就那样一笔带过了,像这个马上要讲的反射机制一样,当时学的时候就忽略了,到后来学习的知识中,很多东西动不动就用反射,所以回过头来把这个给重新补一下,自己欠下的债,迟早是要还的. ---WH 一.什么是反射? 在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称为java语言的

Servlet初步

@WebServlet("/HelloServlet") public class HelloServlet extends HttpServlet {     private static final long serialVersionUID = 1L;          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IO

javaWeb 理解(一)

Servlet Servlet(Servlet Applet),全称Java Servlet.是用Java编写的服务器端程序.主要功能用于交互式地浏览和修改数据,生成动态web内容.狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现这个这个Servlet接口的类. Servlet接口定义了Servlet与servlet容器之间的关系.Servlet容器将Servlet类载入内存,并产生Servlet实例和调用它具体的方法.但是要注意的是,在一个应用程序中,每种S

BaseServlet

Java web----BaseServlet,web----baseservlet 1 BaseServlet的作用 在开始客户管理系统之前,我们先写一个工具类:BaseServlet. 我们知道,写一个项目可能会出现N多个Servlet,而且一般一个Servlet只有一个方法(doGet或doPost),如果项目大一些,那么Servlet的数量就会很惊人. 为了避免Servlet的“膨胀”,我们写一个BaseServlet.它的作用是让一个Servlet可以处理多种不同的请求.不同的请求调用