Atitit atimvc rest原理与自定义实现t33 目录 1.1. Web.xml 1 1.2. MvcFilter 2 1.3. jerserMeth 4 原理 过滤器 过滤即可
Atitit atimvc rest原理与自定义实现t33
目录
1.1. Web.xml 1
1.2. MvcFilter 2
1.3. jerserMeth 4
原理 过滤器 过滤即可
/tomcatx/src/restpkg/jerserMeth.java
- 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>
- 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
}
}
- 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 原理 过滤器 过滤即可相关推荐
- web.xml、JSP原理、指令
web应用和web.xml JSP(java server page)本质是servlet,因为JSP最终要编译成servlet才能运行. Tomcat的webapps路径下的web项目中的WEB-I ...
- ❤️缓存集合(一级缓存、二级缓存、缓存原理以及自定义缓存—源码+图文分析,建议收藏) ❤️
❤️缓存集合(一级缓存.二级缓存.缓存原理以及自定义缓存-源码+图文分析,建议收藏) ❤️ 查询 : 连接数据库 ,耗资源!一次查询的结果,给他暂存在一个可以直接取到的地方!--> 内存 : 缓 ...
- vue-cli Webpack之Loader原理及自定义Loader
文章目录 1. Loader 分类与执行顺序 1.1 Loader 分类 1.2 Loader 执行顺序 1.3 使用Loader方式 1.3.1 内联 Loader 2. 开发 Loader 步骤 ...
- 换肤功能原理及自定义组件化UI样式初步尝试
只从UI工作开始向前端工作,我一直计划着开发一套属于自己的UI框架,网站通过拖拽点击,或输入布局代码,后台自动生成一套静态页面,从此前端工作仅需要补充各种排版即可,静态页面通过代码生成. 可能我上面的 ...
- 简述SpringBoot Starter原理及自定义实现
简述SpringBoot Starter原理及自定义实现 一.简述 二.结合SpringBoot启动原理看容器如何实现自动装配 三.解析mybatis-spring-boot-starter包看myb ...
- [转帖]web安全:通俗易懂,以实例讲述破解网站的原理及如何进行防护!如何让网站变得更安全。...
web安全:通俗易懂,以实例讲述破解网站的原理及如何进行防护!如何让网站变得更安全. https://www.cnblogs.com/1996V/p/7458377.html 感谢原作者写的内容 安全 ...
- web安全:通俗易懂,以实例讲述破解网站的原理及如何进行防护!如何让网站变得更安全。...
本篇以我自己的网站为例来通俗易懂的讲述网站的常见漏洞,如何防止网站被入侵,如何让网站更安全. 要想足够安全,首先得知道其中的道理. 本文例子通俗易懂,主要讲述了 各种漏洞 的原理及防护,相比网上其它的 ...
- spring web.xml中 过滤器(Filter)的工作原理和代码演示
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, ...
- struts2中struts.xml和web.xml文件解析及工作原理
转自:https://www.cnblogs.com/printN/p/6434526.html web.xml <?xml version="1.0" encoding=& ...
- XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较
6月20日 XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较 1:DOM DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准.DOM 是以层次结 ...
最新文章
- java中形参可变的方法
- 电脑的发展史_互联网发展史 硅谷传奇之苹果公司
- C语言的特点是什么?
- 入手腾龙SP AF90mm MACRO
- mysql 枚举_是否推荐使用MySQL的enum类型?
- uva 1025——A Spy in the Metro
- BZOJ 3479: [Usaco2014 Mar]Watering the Fields( MST )
- 2019游戏 f1_2019年F1中国大奖赛激情开跑,这款手游带你体验真实F1的魅力
- python 封装函数_python:函数数据封装
- 腾讯再诉今日头条系 要求删除用户游戏视频
- 追新求快的时代,别让 Java Web 开发必备工具 Tomcat 变成“熟悉的陌生人”!
- maven scope范围
- 打不开malloc和free函数
- 计算机网络与通信第二版复习,自学考试计算机网络与通信笔记第二章
- 2021年软件质量事故盘点
- 微信网页授权,以及如何在本地调试
- 【Task08】Numpy学习打卡
- 算法进阶面试题07——求子数组的最大异或和(前缀树)、换钱的方法数(递归改dp最全套路解说)、纸牌博弈、机器人行走问题
- 打造自己的游戏修改器和内存补丁
- 查找/下载文献的一些网址汇总
热门文章
- fcntl.h里没有open_国际高中课程里的IB课程 你了解多少?
- 自由落体运动c语言编程_欧姆龙NX PLC 轴运动功能块,ST和梯形图双语言
- 算法面试题 java_【面试算法题】Java Stack 类的使用
- python最简单的爬取邮箱地址怎么写_详解python定时简单爬取网页新闻存入数据库并发送邮件...
- C++内存详解[精]
- Celery-一个会做异步任务,定时任务的芹菜
- Hadoop2源码分析-YARN 的服务库和事件库
- IntelliJIdea14 修改默认缓存的位置
- JavaScript编程风格 (share)
- SQL数据库中日期时间类型,按日期group by 实现