栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何制作URL过滤器以使用Servlet路由动作?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何制作URL过滤器以使用Servlet路由动作?

我看到3种方式:过滤器,基本servlet(通过主servlet的所有请求)或“ servlet映射”

过滤

这个例子重写URL

http://example.org/ <整数值>

http://example.org/user?id= <整数值>

http://example.org/1234-> http://example.org/user?id=1234
  1. 确定web.xml中的过滤器
     <filter>         <filter-name>Router</filter-name>         <filter-class>org.example.Router</filter-class>        <init-param>  <param-name>param1</param-name>  <param-value>valueOfparam1</param-value>         </init-param>     </filter>     <filter-mapping>         <filter-name>Router</filter-name>         <url-pattern>/*</url-pattern>     </filter-mapping>

在init-param部分中,您可以指定路由规则

  1. 过滤器类
        public class Router implements javax.servlet.Filter {    private static final Pattern REWRITE_PATTERN = Pattern.compile("(^[1-9]\d*)$");    @Override    public void destroy() {    }    @Override    public void doFilter(ServletRequest req, ServletResponse res, FilterChain fc) throws IOException, ServletException {    //this method calling before controller(servlet), every request        HttpServletRequest request = (HttpServletRequest) req;        String url = request.getRequestURL().toString();        String number = url.substring(url.lastIndexOf("/")).replace("/", "");        Matcher m = REWRITE_PATTERN.matcher(number);        if(m.find()) { RequestDispatcher dispatcher = request.getRequestDispatcher("user?id=" + m.group(1)); dispatcher.forward(req, res);        } else { fc.doFilter(req, res);        }    }    @Override    public void init(FilterConfig fc) throws ServletException {        //here you may read params from web.xml    }}

基本Sevlet

    public class BasicServlet extends HttpServlet {       //route rules here, and rewrite    }

servlet映射

    <servlet-mapping>        <servlet-name>UserServlet</servlet-name>        <uri-mapping>/user/*</uri-mapping>    </servlet-mapping>    <servlet-mapping>        <servlet-name>PostServlet</servlet-name>        <uri-mapping>/post/*</uri-mapping>    </servlet-mapping>
  • 过滤器-更灵活,不需要认真修改工作代码
  • 基本servlet-灵活,需要更改您的代码
  • Servlet映射-简单,不灵活(针对特定的路由规则)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415446.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号