首页 > 其他分享 >servlet数量太多,搞个轻量级springmvc

servlet数量太多,搞个轻量级springmvc

时间:2024-06-15 22:58:09浏览次数:24  
标签:java RequestMapping springmvc public 搞个 import servlet method 轻量级

这两天用jsp+servlet+MySQL开发了一个企业网站,后台和前台都有,功能已经实现了,现在总结发现,servlet是真的多,我这个系统有7个表,后台实现一遍增删改查,就得有28个servlet,而且还有前台的部分,servlet的数量真的太多了,想想看springmvc,其实是可以写一个轻量级的springmvc的。

在Servlet中实现类似Spring的@Controller注解功能,主要是通过自定义注解和一个中央处理器(如Servlet过滤器或一个集中的Servlet)来解析这些注解并将请求映射到相应的方法。下面是一个简单的示例:

  1. 自定义注解 - ControllerRequestMapping
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Controller {
}

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequestMapping {
    String value();
}
  1. 自定义控制器类
@Controller
public class MyController {

    @RequestMapping(value = "/hello")
    public void hello(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.getWriter().write("Hello, World!");
    }
}
  1. 创建一个过滤器来处理请求映射
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

public class DispatcherFilter implements Filter {

    private Map<String, Method> handlerMapping = new HashMap<>();

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // 扫描所有带有@Controller注解的类,并将它们注册到handlerMapping中
        // 这里需要使用反射或类路径扫描库(如ClassGraph)
        // 以下代码仅为示例,实际应用中需要根据项目结构进行调整
        Class<MyController> clazz = MyController.class;
        for (Method method : clazz.getDeclaredMethods()) {
            if (method.isAnnotationPresent(RequestMapping.class)) {
                RequestMapping annotation = method.getAnnotation(RequestMapping.class);
                handlerMapping.put(annotation.value(), method);
            }
        }
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        String uri = request.getRequestURI();
        Method method = handlerMapping.get(uri);
        if (method != null) {
            try {
                method.invoke(method.getDeclaringClass().newInstance(), request, response);
            } catch (Exception e) {
                throw new ServletException(e);
            }
        } else {
            response.sendError(HttpServletResponse.SC_NOT_FOUND);
        }
    }

    @Override
    public void destroy() {
    }
}
  1. 在web.xml中配置过滤器
<filter>
    <filter-name>dispatcher</filter-name>
    <filter-class>com.example.DispatcherFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>dispatcher</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

请注意,上述代码仅作为示例,实际应用中可能需要处理更多细节,如异常处理、类型安全、参数绑定等。此外,使用反射和类路径扫描可能会带来性能影响,因此在生产环境中应考虑优化。

标签:java,RequestMapping,springmvc,public,搞个,import,servlet,method,轻量级
From: https://blog.csdn.net/svygh123/article/details/139710314

相关文章

  • Spring基础 - SpringMVC请求流程和案例
    前文我们介绍了Spring框架和Spring框架中最为重要的两个技术点(IOC和AOP),那我们如何更好的构建上层的应用呢(比如web应用),这便是SpringMVC;SpringMVC是Spring在SpringContainerCore和AOP等技术基础上,遵循上述WebMVC的规范推出的web开发框架,目的是为了简化Java栈的web开发。......
  • springMVC中的注解
    目录3、@RequestMapping注解3.1、功能3.2、注解的位置3.3、value属性3.4、method属性3.5、params属性(了解)3.6、headers3.7、支持ant风格的路径3.8、SpringMVC支持路径中的占位符**3、@RequestMapping注解3.1、功能就是将用户的请求和处理请求的控制器的方法关联起来,建立映射......
  • Java版SaaS模式云HIS系统源码Java+Spring+SpringBoot+SpringMVC 基层卫生健康云HIS源码
    Java版SaaS模式云HIS系统源码Java+Spring+SpringBoot+SpringMVC基层卫生健康云HIS源码云HIS全称为基于云计算的医疗卫生信息系统(Cloud-BasedHealthcareInformationSystem),是运用云计算、大数据、物联网等新兴信息技术,按照现代医疗卫生管理要求,在一定区域范围内以数字化形式提供......
  • springMVC入门案例
    目录2、入门案例2.1、开发环境2.2、创建maven工程2.3、配置web.xml2、入门案例2.1、开发环境IDE:idea2022.2.3构建工具:maven3.6.0服务器:tomcat8.5Spring版本:5.3.1使用其他版本也可,只需要版本对应就可2.2、创建maven工程导pom依赖时,由于Maven具有传递性的,所以不需要将......
  • SpringMVC简介
    目录1、SpringMVC简介1.1、什么是MVC1.2、什么是SpringMVC1.3、SpringMVC的特点1、SpringMVC简介1.1、什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称为实体类Bean:专门存......
  • httpclient,轻量级idea集成测试工具
    优点:不用新开一个网页,具有测试数据保存功能,不需要配置即用(对比swagger)   不会特别占内存(对比postman) 使用方法:idea中安装插件controller方法中点击 选择对应action 即可自动生成测试,点击左侧三角即可测试。但是数据内容需要自己填写如下:###分页查询POST{......
  • SpringMVC
    文章目录1.MVC架构2.基于 Servlet 的MVC模式3.Model1模式与Model2模式Model1模式:Model2模式:4.MVVM架构5.SpringMVC6.SpringMVC实现步骤8.Controller的两种实现方式9.RestFul风格10.@ResponseBody11.乱码解决12.过滤器VS拦截器区别:参考......
  • Tiny Time Mixers (TTM)轻量级时间序列基础模型:无需注意力机制,并且在零样本预测方面表
    大语言模型的发展让研究人员专注于建立尽可能大的模型。但是其实较小的模型在某些任务中表现会优于较大的模型时,例如:Llama3-8B在MMLU任务上的表现优于较大的Llama2-70B!这就说明大模型并不是万能的,在一些特定任务中,小模型表现得可能会更出色。所以IBM的研究人员就推出了一个......
  • 一文了解 - -> SpringMVC
    一、SpringMVC概述SpringMVC是由Spring官方提供的基于MVC设计理念的web框架。SpringMVC是基于Servlet封装的用于实现MVC控制的框架,实现前端和服务端的交互。1.1SpringMVC优势严格遵守了MVC分层思想采用了松耦合、插件式结构;相比较于我们封装的BaseServlet以及其他的......
  • 轻量级批处理技术解析
    在日常开发过程中,或多或少我们都会涉及到数据报表、统计分析、定时任务之类的应用场景。针对这些场景,我们可以采用Hadoop生态圈中的相关技术。但是Hadoop是一种重量级的实现方案,实际应用过程中存在入门门槛过高、学习周期过长、开发和维护困难等问题,对于某些体量并不是特别大......