首页 > 其他分享 >黑马优化Servlet

黑马优化Servlet

时间:2023-05-23 20:45:35浏览次数:51  
标签:java Servlet 优化 javax com import servlet 黑马 hailei

问题:平常我们编写servlet的时候,经常会一个java文件写一个方法调用这样很麻烦,会写一堆的Servlet文件

解决方法:编写基本的baseservlet,之后其他的文件采用/Brand/*调用该方法,替换HttpServlet,根据请求的最后一段路径来进行方法分发

BaseServlet.java文件

package com.hailei.web.servlet;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * 替换HttpServlet,根据请求的最后一段路径来进行方法分发
 */

public class BaseServlet extends HttpServlet {

    //根据请求的最后一段路径来进行方法分发
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1. 获取请求路径
        String uri = req.getRequestURI(); // /brand-case/brand/selectAll

        //2. 获取最后一段路径,方法名
        int index = uri.lastIndexOf('/');
        String methodName = uri.substring(index + 1); //  /selectAll? selectAll?

        //2. 执行方法
        //2.1 获取BrandServlet /UserServlet 字节码对象 Class

        Class<? extends BaseServlet> cls = this.getClass();
        //2.2 获取方法 Method对象
        try {
            Method method = cls.getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
            //2.3 执行方法
            method.invoke(this,req,resp);
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }


    }
}

之后,其他的就直接写后面就行

package com.hailei.web.servlet;


import com.alibaba.fastjson.JSON;
import com.hailei.pojo.Brand;
import com.hailei.pojo.PageBean;
import com.hailei.service.BrandService;
import com.hailei.service.impl.BrandServiceImpl;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.List;

@WebServlet("/brand/*")
public class BrandServlet extends BaseServlet{
    private BrandService brandService = new BrandServiceImpl();

    public void selectAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1. 调用service查询
        List<Brand> brands = brandService.selectAll();

        //2. 转为JSON
        String jsonString = JSON.toJSONString(brands);
        //3. 写数据
        response.setContentType("text/json;charset=utf-8");
        response.getWriter().write(jsonString);
    }
}

优势:只需要写一个Servlet就可以了,把方法往里面堆放就可以了

标签:java,Servlet,优化,javax,com,import,servlet,黑马,hailei
From: https://www.cnblogs.com/yzx-sir/p/17426320.html

相关文章

  • 支付宝小程序排名优化指南——提高bao光率与关注度
       支付宝小程序的排名是由多个因素决定的,包括曝光率、关注度、用户活跃度等。以下是一些提高支付宝小程序曝光率和关注度的方法。填写完整的小程序信息:完整的小程序信息包括小程序名称、标题、简介、图标、分类、标签等,要尽量补充完整,有助于搜索引擎搜索,提高曝光率和发现度......
  • 上下文管理者(ServletContext)
    作用1.获取全局初始化参数2.资源共享(servlet通信)能让上下文呢的Servlet相互关联起来3.获取资源文件生命周期创建服务器启动的时候会为每个项目创建一个servletContext上下文对象,servleContext是项目的一个引用销毁在服务器关闭或者移除项目的时候servletContext销毁获取方......
  • 技术团队要小心,那些技术过早优化的迹象
    hi,我是熵减,见字如面。在软件行业内,有一句关于技术实用性的名言:“过早优化是万恶之源。”在局部代码层面上的追求先进,是无可厚非的事情。但是,在一些小公司中,技术过早优化的现象又是很常见的。当小公司为了追求技术的先进性和高效性,往往会采用一些不适合自己的技术方案,导致开发成......
  • 基于PSO优化的SVM数据预测算法matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:     2.算法涉及理论知识概要         支持向量机(supportvectormachines,SVM)是二分类算法,所谓二分类即把具有多个特性(属性)的数据分为两类,目前主流机器学习算法中,神经网络等其他机器学习模型已经能很好完成二分......
  • 【CentOS 7系统管理员必看】如何轻松检测软中断,优化系统性能?
    在CentOS7中,软中断是一种中断类型,它由内核发起并在内核空间中执行,用于处理网络、存储和其他异步事件。软中断的主要工作是将网络数据包、磁盘IO等异步事件传递给应用程序的工作队列中,以便应用程序可以及时处理这些事件。然而,如果软中断的数量过多,就会对系统的性能产生负面影响,......
  • 程序6种性能优化
    这6种性能优化,让你的程序飞起来!软件设计开发某种意义上是"取"与"舍"的艺术。关于性能方面,就像建筑设计成抗震9度需要额外的成本一样,高性能软件系统也意味着更高的实现成本,有时候与其他质量属性甚至会冲突,比如安全性、可扩展性、可观测性等等。大部分时候我们需要的是:在业务遇到......
  • Java-Servlet解析
    前言从事Javaweb项目开发有一段时间了,一直不理解它是怎么一回事,后来查询资料发现这里面涉及到几个东西,分别是tomcat、JavaEE中13个规范之一的servlet、以及springMVC。于是就去学习了一下,发现这里里面都是围绕这servlet进行的操作。于是就有了今天的这个总结。Servlet定义Servl......
  • 火山引擎DataLeap数据调度实例的 DAG 优化方案(三):技术实现
    在原始数据中,是以一个数组的形式返回节点信息及依赖关系。所以,需要对数据进行处理形成图所需要的数据,同时,利用多个map对数据进行存储,方便后续对数据进行检索,减少时间复杂度。实例节点的样式需要通过基础图形Text(文本)、Rect(矩形)、Icon(图标)进行组合,以达到我们的设计要求。......
  • useState多个变量太长,合理优化
    解决办法:使用 useImmer 替代useState,immer.js 这个库,是基于 proxy 拦截 getter 和 setter 的能力,让我们可以很方便的通过修改对象本身,创建新的对象用对象包含多个属性,对对象的属性进行修改,然后用immer去处理。const[state,setState]=useImmer({a:1,b:{......
  • Windows server 2022 个人使用 优化批处理batch
    Windowsserver2022个人使用一些优化@echooffregadd"HKLM\SOFTWARE\Microsoft\ActiveSetup\InstalledComponents\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}"/v"IsInstalled"/tREG_DWORD/d00000000/fregadd"HKLM\SOFTWARE\Microsof......