1、以前进行操作的时候,例如我们进行登陆操作我们使用LoginServlet进行处理,进行注册操作我们使用RegisterServlet,很多业务的操作的时候我们就要定义很多个Servlet

有了BaseServlet我们可以把业务操作都放在一个Servlet中进行处理

通常,写一个项目可能会出现N多个Servlet,而且一般一个Servlet只有一个方法(doGet或doPost),如果项目大一些,那么Servlet的数量就会很惊人。为了避免Servlet的“膨胀”,我们写一个BaseServlet。它的作用是让一个Servlet可以处理多种不同的请求。不同的请求调用Servlet的不同方法。我们写好了BaseServlet后,让其他Servlet继承BaseServlet,例如CustomerServlet继承BaseServlet,然后在CustomerServlet中提供add()、update()、delete()等方法,每个方法对应不同的请求。并且每个方法放回一个字符串,指出它重定向或转发请求的路径,BaseServlet获得这个路径,再帮助子类转发请求或重定向到特定的页面。 
见下图: 

我们知道,Servlet中处理请求的方法是service()方法,这说明我们需要让service()方法去调用其他方法。例如调用add()、mod()、delele()、findAll()等方法!具体调用哪个方法需要在请求中给出方法名称!然后service()方法通过方法名称来调用指定的方法。

1、第一我们要创建的servlet必须继承BaseServlet

我们来看下程序的代码:

package com.weiyuan.test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import cn.itcast.servlet.BaseServlet; /**
* Servlet implementation class ListServlet
*/
@WebServlet("/ListServlet")
public class ListServlet extends BaseServlet {
private static final long serialVersionUID = 1L; public String login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("login is called");
return"f:/index.jsp";
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet is called");
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost is called");
} }

我们客户端如果要访问login这样业务操作必须写成:

写成这样会报错http://localhost:8080/BaseServlet/ListServlet

必须写上你要访问的方法

http://localhost:8080/BaseServlet/ListServlet?method=login

如何要增加注册业务操作:只需要在定义

public String register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("login is called");
return"f:/index.jsp";
}

/**

* 请求处理方法的参数都与doGet()和doPost()相同,即request和response

* 但请求处理方法有String类型的返回值,而doGet()和doPost()没有返回值。

* 在请求本方法时需要给出method=regist参数!

*/

BaseServlet中的请求处理方法有一个String类型的返回值,返回值表示转发或重定向的目标页面。例如:

l  f:/index.jsp:其中f:表示转发,即forward的意思,/index.jsp表示转发到/index.jsp页面;

l  r:/index.jsp:其中r:表示重定向,即redirect的意思,/index.jsp表示重定向到/index.jsp页面。

l  null:表示不转发也不重定向;

最新文章

  1. 1,字符是否为空,2,比较两个字符大小。String.Compare(String, String)。string.IsNullOrEmpty(string)
  2. mysql 查看语句的执行效率
  3. 打印心形---print 的基础使用
  4. thinkphp框架中session常识
  5. IoTimerInLineHook
  6. 2.CentOS更换阿里源
  7. HDU4451Dressing(计数)
  8. C语言学习之插入排序
  9. 使用C#+socket实现用移动设备控制的虚拟手柄
  10. ELK简单安装
  11. Java中的异常处理与抛出
  12. 【angularJs】阻止默认事件
  13. Nancy的基本用法
  14. Java面试基础知识(2)
  15. advertisingIdentifier
  16. SharePoint 会话(Session)状态和状态服务
  17. cmake-mark_as_advanced
  18. eclipse工具的安装配置
  19. Android——电脑蓝屏重启后,studio无法认出Android环境 setup JDK(缓存!缓存!缓存)
  20. 爬虫之Xpath详解

热门文章

  1. Java中的集合(二)单列集合顶层接口------Collection接口
  2. volatile关键字与内存可见性&原子变量与CAS算法
  3. tomcat漏洞利用总结
  4. JavaWeb项目:旅游网站【涉及各种知识】
  5. 实战| 配置DataDog监控Apache Hudi应用指标
  6. Window10:不能建立到远程计算机的连接,你可能需要更改此连接的网络设置。
  7. Java并发编程 (五) 线程安全性
  8. MyBatis(二)参数传递和自定义结果集
  9. Java实现 LeetCode 784 字母大小写全排列(DFS)
  10. 第三届蓝桥杯JavaB组国(决)赛真题