JavaWeb网上图书商城完整项目--BaseServlet

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:表示不转发也不重定向;

posted on 2017-04-28 13:22  luzhouxiaoshuai  阅读(723)  评论(0编辑  收藏  举报

导航