zoukankan      html  css  js  c++  java
  • 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:表示不转发也不重定向;

  • 相关阅读:
    ASP.NET -- repeater控件的使用
    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40
    错误提示:在此上下文中不允许使用名称 "***"。有效表达式包括常量、 常量表达式和变量(在某些上下文中),不允许使用列名。
    mongodb 性能提高之利用索引, 待续
    工程化 经历的 4 个阶段
    把连续的字符 变成 一个
    sort 排序详解
    理解正则 的 ?! ?:
    [ 订单查询 ] 性能 高并发 : 分表 与 用户id%1024 存放表
    搭建LNMP基础框架
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/6781185.html
Copyright © 2011-2022 走看看