精华内容
下载资源
问答
  • servlet 路由的实现

    2017-08-30 10:59:00
    现在servlet3.0以上都支持注解了,但是在使用springMVC的时候,可以一个写多个@requestMapping来做路由,变成一个类里面每个方法接口都有对应一个url可以访问 然后我就在想,servlet的话如何实现呢;毕竟不管你...

    现在servlet3.0以上都支持注解了,但是在使用springMVC的时候,可以一个写多个@requestMapping来做路由,变成一个类里面每个方法接口都有对应一个url可以访问

    然后我就在想,servlet的话如何实现呢;毕竟不管你springMVC如何牛掰,总要servlet支持才能实现吧,毕竟不管什么框架,都是对原生的功能进行了各种封装实现的;

    最后总算知道怎么实现原生servlet做url路由了

    虽然没去看springMVC的servletDiapatcherServlet源码(其实进去偷偷瞄了一眼,然后发现只有一堆常量和接口,找不到实现就退出来了,也不算看对吧)但是估计应该也是这么个原理吧

    下来来个路由实现的例子

    @WebServlet("/cr/*")//这边注解的意思是只要url中以/cr/为开头的请求全部由这个servlet接受
    public class CommonRest extends HttpServlet {
      protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
                 String baseUri = request.getRequestURI();//这个位置进行url判别,看到底是请求什么功能的
                 if ( baseUri.endsWith("/login") ) {
                   //如果是登入请求,则进行什么操作
                    return;
                 }
                 if ( baseUri.endsWith("/upload") ) {
                   //如果是上传请求,则进行什么操作
                    return;
                 }
                
                //如果它请求了一个咱们没有的接口,就返回404                
                PrintWriter writer = response.getWriter();
    			writer.println("Error: 404");
    			writer.flush();
    			return;
                 
      }
    }

    思路:

    1.先整个servlet接受所有你可能会接收到的请求  用通配符*来匹配

    2.获取用户请求的url  然后进行url判别,如果url满足你的要求,则调用对应的代码进行服务

    (我上面的例子是针对post请求的,如果是个get的请求,就不能用endsWith来判断,而是要判断整个url是否包含)

    转载于:https://my.oschina.net/2892328252/blog/1525994

    展开全文
  • 今天拿同学作业去糊弄老师的时候,发现同学的WebServlet注释不生效,导致网站路由

    今天拿同学作业去糊弄老师的时候,发现同学的WebServlet注释不生效,导致网站路由不起来,一个劲地蛋疼。还好程序员有StackOverflow,查了一下,是声明的Servlet版本过低导致的。


    所以只需要在项目下的web.xml文件中,把版本提高就可以了。


    具体做法如下:

    将:

    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
        version="2.4">
    	<welcome-file-list>
    	  <welcome-file>index</welcome-file>
    	</welcome-file-list>
    </web-app>

    改为:

    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"
        version="3.0">
    	<welcome-file-list>
    	  <welcome-file>index</welcome-file>
    	</welcome-file-list>
    </web-app>

    就OK了。

    展开全文
  • java 8 实现简单的Servlet路由

    千次阅读 2017-09-11 17:57:25
    使用注解方式创建Servlet类,doGet方法转向doPost方法 @WebServlet("/svc/*") public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp)...

    使用注解方式创建Servlet类,doGet方法转向doPost方法

    
    @WebServlet("/svc/*")
    public class MyServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doPost(req, resp);
        }

    doPost方法接收HttpServletRequest, HttpServletResponse两个参数,无返回值,可以用BiConsumer接收
    通过Map建立字符串到方法的映射

        private Map<String, BiConsumer<HttpServletRequest, HttpServletResponse>> routerMap = new HashMap<>();
    
        @Override
        public void init() throws ServletException {
            routerMap.put("test", this::test);
            routerMap.put("login", this::login);
            routerMap.put("route1", this::route1);
            routerMap.put("route2", this::route2);
        }

    reqresp进行编码和格式设置
    获取请求的地址并截去公共部分字符串
    用所获得的字符串从Map中获取到实际处理请求的方法并执行

        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            resp.setCharacterEncoding("utf-8");
            req.setCharacterEncoding("utf-8");
            resp.setContentType("text/html");
    
            String route = req.getRequestURI().substring(5);
    
            BiConsumer<HttpServletRequest, HttpServletResponse> router = routerMap.get(route);
    
            if (router == null) router = (request, response) -> System.out.println("no route to" + route);
    
            router.accept(req, resp);
        }

    像写正常的doPost方法一样写处理请求的方法

        public void test(HttpServletRequest req, HttpServletResponse resp) {
            req.getParameterMap().forEach((k, v) -> System.out.println(k));
            try {
                resp.getWriter().print("{\"result\":\"hello\"}");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public void login(HttpServletRequest req, HttpServletResponse resp) {
        // ...
        }
    
        // ...
    }
    展开全文
  • Servlet3.0注解方式详解

    2016-11-28 16:33:24
    注解的方式省去了配置web.xml的繁琐步骤,要使用注解,必须满足两个条件: ...3.为servlet添加注解:最简单的注解方式 4.打开服务器,部署项目。在浏览器中输入: localhost:8080/项目名/ts.

    注解的方式省去了配置web.xml的繁琐步骤,要使用注解,必须满足两个条件:

    Servlet3.0版本及以上

    Tomcat7.0及以上

    1.编写一个类:继承HttpServlet

    2.覆盖doGet; doPost方法,


    3.为servlet添加注解:最简单的注解方式


    4.打开服务器,部署项目。在浏览器中输入:

    localhost8080/项目名/ts.do


    5.注解:指定多个映射url


    使用urlPatterns属性,可以为同一个servlet指定多个映射url,中间用逗号隔开即可。

    6.注解:指定初始化参数


    使用初始化参数的方式:


    7.注解的其他属性



    注意:Value 属性和urlPatterns属性不能同时存在;

    Value对应一个url的映射;

    urlPatterns可以对应多个url映射;

    以上为servlet3.0的注解使用方式,与web.xml常用属性的配置方式相匹配,如有其他需要,请查看WebServlet的使用文档。



    展开全文
  • Servlet

    2020-03-03 20:18:38
    1.Servlet 1.1 什么是servlet 1.2 Servlet标准 API核心包(在线文档) 2.Servlet常见方法与生命周期 2.1HttpServlet处理Http请求 2.2生命周期 2.3Servlet请求处理过程图
  • 在学校学习Servlet和过滤器的时候,通常是在web.xml文件中配置的,这样可以将配置信息集中在一起,方便修改,而且如果采用注解的形式,会在编译的过程中将注解一同编译进去,这样就无法方便的进行修改了,如果是远程...
  • servlet

    2021-03-16 23:59:56
    Day46 Tomcat、Servlet WEB流程 1.1 软件架构 B/S : 浏览器/服务端 基于浏览器,比如网页版百度,网页版淘宝等,只要有浏览器,通过地址 就可以访问 C/S : 客户端/服务端 有指定的客户端.比如PC端淘宝APP,或者手机端...
  • Servlet3.0的注解无法生效解决方案

    千次阅读 2019-07-09 17:29:42
    今天在项目中使用servlet的时候出现访问路径链接无效的问题。 这个问题是由于Servlet3.0之后的web.xml的文件头配置已经和之前的版本不一样了,以下为Eclipse创建的Dynamic Web Project的web.xml文件,Servlet为2.5:...
  • Servlet讲解

    2019-11-12 09:38:11
    文章目录Servlet执行原理Servlet的创建与继承结构Servlet生命周期配置Servlet的路径web.xml中进行配置:注解进行配置 Servlet执行原理   servlet中并没有main方法,servlet中的方法是Tomcat进行调用的,在写好...
  • Servlet作为服务器端动态资源,需要进行配置后才能访问。 Servlet的配置方式有两种: a、配置文件方式 在项目的web.xml中配置。 Servlet3.0之前的版本,只能在配置文件中进行配置。 示例代码 <servlet> <...
  • 详解Servlet

    2017-12-31 11:02:45
    Servlet 2.2 servlet 2.3 servlet 2.4 Servlet 2.5 Servlet 3.0 Servlet 4.0草案 常见容器 百度定义: Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下...
  • 比如要实现这个自定义注解实现RequestMapping注解的功能。只需要很少的代码就能完成这个功能。 0,第一步自然是定义一个注解 @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy....
  • Servlet规范总结

    万次阅读 2016-10-08 08:49:39
    Servlet接口Servlet规范的核心接口即是Servlet接口,它是所有Servlet类必须实现的接口,在Java Servelt API中已经提供了两个抽象类方便开发者实现Servlet类,分别是GenericServlet 和 HttpServlet,GenericServlet...
  • Servlet规范系列 之 Servlet源码分析

    千次阅读 2020-08-14 23:50:44
      Servlet接口是Java Servlet API的核心抽象。所有Servlet类必须直接或间接的实现该接口,或者更通常做法是通过继承一个实现了该接口的类从而复用许多共性功能。目前有GenericServlet和HttpServlet这两个类实现了...
  • Servlet3.0提供@WebFilter注解将一个实现了javax.servlet.Filter接口的类定义为过滤器,这样就可以不用再web.xml下配置了。 Servlet: 属性和2.0的对比 filterName:即以前web.xml中的filter-name。 urlPatterns:...
  • Servlet 3.1规范

    千次阅读 2019-06-29 18:31:18
    目录概览1.1 什么是Servlet1.2 什么是Servlet容器1.3 例子1.4 Servlet与其他技术比较1.5 与Java平台企业版的关系1.6 与Java Servlet规范2.5版本间兼容性1.6.1 监听器(Listener)顺序1.6.1 注解处理Servlet接口2.1 ...
  • 本文转载自kaitao.hongxi.org...ServletContext(Servlet上下文)接口定义了servlet运行在的Web应用的视图。容器供应商负责提供Servlet容器的ServletContext接口的实现。Servlet可以使用ServletContext对象记录事件...
  • Servlet接口是Java Servlet API的核心抽象。所有Servlet类必须直接或间接的实现该接口,或者更通常做法是通过继承一个实现了该接口的类从而复用许多共性功能。目前有GenericServlet和HttpServlet这两个类实现了...
  • Java Servlet

    2019-05-12 23:13:46
    实现servlet接口 package servlet; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; @WebServlet("/demo") public class ServletDemo1 implements Servlet { ...
  • Servlet基本使用

    2020-12-02 15:05:59
    1.Servlet简介 Servlet 的 JAVAEE 中指定了一套标准,目前主要的用途就是写 web 应用(web application)。 2.HttpServlet和Servlet的关系 Http ServletServlet 接口的一个实现类,但它本身是个抽象类,所以我们...
  • Servlet el jstl

    2021-08-19 21:50:44
    请求流程 http://localhost:8080/Servlet_01/hello ...此时 /hello就会去和Servlet_01项目中 的web.xml中定义的路由进行匹配(或者是注解定义的路由) 找到这个对应的类之后,就会去执行...
  • 深入理解Servlet

    2017-11-08 15:10:58
    java Servlet
  • 加载阶段:调用无参构造函数实例化Servlet,根据web.xml的信息创建ServletConfig对象 init:将ServletConfig作为参数调用init方法 第一次创建 Servlet对象时调用,在后续每次用户请求时不再调用 单例多线程不安全:...
  • Servlet规范

    2018-05-23 16:15:00
    在上一篇Servlet容器篇中提到Web容器中的Servlet容器的作用是管理Servlet的生命周期,那么肯定需要符合Servlet规范,这篇主要介绍下Servlet规范 参考:...
  • 3.Servlet

    2020-11-13 22:00:27
    前言——Servlet的作用: 不希望点击后相应的仅仅是一个网页界面而是引进到后端程序中,用到ServletServlet用来连接前端和后端 通俗来讲servlet专门用来接收客户端的请求,专门接收客户端的请求数据,然后调用底层...
  • Tomcat利用Servlet处理请求的过程画了一张图,先上图: Servlet全称Java Servlet,没有对应中文翻译,都叫Servlet,其实就是Java编写的服务端程序。tomcat-embed-core包中有一个Servlet接口: 它有很多实现类...
  • servlet3.1规范: 第2章 Servlet接口

    千次阅读 2016-09-23 14:20:54
    转载: Servlet规范Servlet接口Servlet接口是Java Servlet API的核心抽象。所有Servlet类必须直接或间接的实现该接口,或者更通常做法是通过继承一个实现了该接口的类从而复用许多共性功能。目前有GenericServlet和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,960
精华内容 3,984
关键字:

servlet注解路由