Atitit atimvc rest原理与自定义实现t33

目录

1.1. Web.xml 1

1.2. MvcFilter 2

1.3. jerserMeth 4

原理  过滤器  过滤即可

/tomcatx/src/restpkg/jerserMeth.java

  1. Web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

<display-name>js_jsp_utf8</display-name>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

<welcome-file>default.html</welcome-file>

<welcome-file>default.htm</welcome-file>

<welcome-file>default.jsp</welcome-file>

</welcome-file-list>

<!--用于定义 RESTful Web Service 接口-->

<servlet>

<servlet-name>JerseyServlet</servlet-name>

<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>

<init-param>

<param-name>javax.ws.rs.Application</param-name>

<param-value>restpkg.jerseyCfg</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>JerseyServlet</servlet-name>

<url-pattern>/services/*</url-pattern>

</servlet-mapping>

</web-app>

  1. MvcFilter 

package restpkg;

import java.io.File;

import java.io.IOException;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.lang.reflect.Parameter;

import java.util.List;

import java.util.Map;

import java.util.function.Consumer;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.annotation.WebFilter;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction;

import org.apache.commons.io.FileUtils;

import org.apache.commons.lang3.ObjectUtils;

import org.apache.commons.lang3.reflect.ConstructorUtils;

import com.attilax.mvc.MethodObj;

import com.attilax.mvc.MvcUtil;

import com.google.common.base.Objects;

import com.google.common.collect.Lists;

import com.google.common.collect.Maps;

//@Component

@WebFilter(urlPatterns = "/*", filterName = "mvcFilter")

public class MvcFilter implements Filter {

@Override

public void destroy() {

// TODO Auto-generated method stub

}

@Override

public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) {

try {

// get url out mapper

List list = Lists.newArrayList();

list.add(jerserMeth.class);

Map<String, MethodObj> url_method_maps = MvcUtil.get_url_out_mapper(list);

HttpServletRequest httpServletRequest = (HttpServletRequest) arg0;

HttpServletResponse httpServletResponse = (HttpServletResponse) arg1;

String uri = httpServletRequest.getRequestURI();

System.out.println(uri);

if (url_method_maps.get(uri) == null) {

arg2.doFilter(arg0, arg1);

return;

}

MethodObj MethodObj1 = url_method_maps.get(uri);

Object classObj = ConstructorUtils.invokeConstructor(MethodObj1.classProp, null);

Method meth = MethodObj1.methodProp;

Object ivkrzt = meth.invoke(classObj, httpServletRequest, httpServletResponse);

// outputHtml(httpServletResponse, r);

System.out.println("==ivkrzt:" + ivkrzt);

return; // not to next ,beirs springmvc show err,cause cant this mappering

// arg2.doFilter(arg0, arg1);

} catch (Exception e) {

throw new RuntimeException(e);

}

}

// private List getMycomponentClassList() {

// List li_allclass=Lists.newArrayList();

// li_allclass.add(MvcCtrol.class);

//

// List li= Lists.newArrayList();

// classList.add();

//

// }

@Override

public void init(FilterConfig arg0) throws ServletException {

// TODO Auto-generated method stub

}

}

  1. jerserMeth 

package restpkg;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.ws.rs.GET;

import javax.ws.rs.Path;

import com.attilax.mvc.MvcUtil;

public class jerserMeth {

//   http://localhost/services/t?aaa

@Path("/t")

public String get(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) {

MvcUtil.outputHtml(httpServletResponse, "hhh");

return "thing";

}

}

Atitit atimvc rest原理与自定义实现t33 目录 1.1. Web.xml 1 1.2. MvcFilter 2 1.3. jerserMeth 4 原理 过滤器 过滤即可相关推荐

  1. web.xml、JSP原理、指令

    web应用和web.xml JSP(java server page)本质是servlet,因为JSP最终要编译成servlet才能运行. Tomcat的webapps路径下的web项目中的WEB-I ...

  2. ❤️缓存集合(一级缓存、二级缓存、缓存原理以及自定义缓存—源码+图文分析,建议收藏) ❤️

    ❤️缓存集合(一级缓存.二级缓存.缓存原理以及自定义缓存-源码+图文分析,建议收藏) ❤️ 查询 : 连接数据库 ,耗资源!一次查询的结果,给他暂存在一个可以直接取到的地方!--> 内存 : 缓 ...

  3. vue-cli Webpack之Loader原理及自定义Loader

    文章目录 1. Loader 分类与执行顺序 1.1 Loader 分类 1.2 Loader 执行顺序 1.3 使用Loader方式 1.3.1 内联 Loader 2. 开发 Loader 步骤 ...

  4. 换肤功能原理及自定义组件化UI样式初步尝试

    只从UI工作开始向前端工作,我一直计划着开发一套属于自己的UI框架,网站通过拖拽点击,或输入布局代码,后台自动生成一套静态页面,从此前端工作仅需要补充各种排版即可,静态页面通过代码生成. 可能我上面的 ...

  5. 简述SpringBoot Starter原理及自定义实现

    简述SpringBoot Starter原理及自定义实现 一.简述 二.结合SpringBoot启动原理看容器如何实现自动装配 三.解析mybatis-spring-boot-starter包看myb ...

  6. [转帖]web安全:通俗易懂,以实例讲述破解网站的原理及如何进行防护!如何让网站变得更安全。...

    web安全:通俗易懂,以实例讲述破解网站的原理及如何进行防护!如何让网站变得更安全. https://www.cnblogs.com/1996V/p/7458377.html 感谢原作者写的内容 安全 ...

  7. web安全:通俗易懂,以实例讲述破解网站的原理及如何进行防护!如何让网站变得更安全。...

    本篇以我自己的网站为例来通俗易懂的讲述网站的常见漏洞,如何防止网站被入侵,如何让网站更安全. 要想足够安全,首先得知道其中的道理. 本文例子通俗易懂,主要讲述了 各种漏洞 的原理及防护,相比网上其它的 ...

  8. spring web.xml中 过滤器(Filter)的工作原理和代码演示

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, ...

  9. struts2中struts.xml和web.xml文件解析及工作原理

    转自:https://www.cnblogs.com/printN/p/6434526.html web.xml <?xml version="1.0" encoding=& ...

  10. XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较

    6月20日 XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较  1:DOM     DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准.DOM 是以层次结 ...

最新文章

  1. java中形参可变的方法
  2. 电脑的发展史_互联网发展史 硅谷传奇之苹果公司
  3. C语言的特点是什么?
  4. 入手腾龙SP AF90mm MACRO
  5. mysql 枚举_是否推荐使用MySQL的enum类型?
  6. uva 1025——A Spy in the Metro
  7. BZOJ 3479: [Usaco2014 Mar]Watering the Fields( MST )
  8. 2019游戏 f1_2019年F1中国大奖赛激情开跑,这款手游带你体验真实F1的魅力
  9. python 封装函数_python:函数数据封装
  10. 腾讯再诉今日头条系 要求删除用户游戏视频
  11. 追新求快的时代,别让 Java Web 开发必备工具 Tomcat 变成“熟悉的陌生人”!
  12. maven scope范围
  13. 打不开malloc和free函数
  14. 计算机网络与通信第二版复习,自学考试计算机网络与通信笔记第二章
  15. 2021年软件质量事故盘点
  16. 微信网页授权,以及如何在本地调试
  17. 【Task08】Numpy学习打卡
  18. 算法进阶面试题07——求子数组的最大异或和(前缀树)、换钱的方法数(递归改dp最全套路解说)、纸牌博弈、机器人行走问题
  19. 打造自己的游戏修改器和内存补丁
  20. 查找/下载文献的一些网址汇总

热门文章

  1. fcntl.h里没有open_国际高中课程里的IB课程 你了解多少?
  2. 自由落体运动c语言编程_欧姆龙NX PLC 轴运动功能块,ST和梯形图双语言
  3. 算法面试题 java_【面试算法题】Java Stack 类的使用
  4. python最简单的爬取邮箱地址怎么写_详解python定时简单爬取网页新闻存入数据库并发送邮件...
  5. C++内存详解[精]
  6. Celery-一个会做异步任务,定时任务的芹菜
  7. Hadoop2源码分析-YARN 的服务库和事件库
  8. IntelliJIdea14 修改默认缓存的位置
  9. JavaScript编程风格 (share)
  10. SQL数据库中日期时间类型,按日期group by 实现