servlet模拟SpringMVC
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"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="3.1">
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>amie.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<!-- servlet拦截下所有请求,交给DispatchServlet处理 -->
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
2. DispatcherServlet.java
public class DispatcherServlet extends HttpServlet {
private static final long serialVersionUID = 116714888769576151L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
// 获取请求URI
String requestURI = request.getRequestURI();
// 请求分发,根据不同请求URL,调用不同的业务处理器
// 注意事项:一个处理器handler类,只有一个方法
// 这个分发逻辑需要好好设计一下
Object handler = null;
// 首先根据请求URL,查找到对应的处理器
if ("/queryUser".equals(requestURI)) {
handler = new QueryUserHandler();
} else if ("/addUser".equals(requestURI)) {
handler = new AddUserHandler();
}
if (handler == null) {
// 设置响应体的媒体类型
response.setContentType("text/plain;charset=utf-8");
// 响应
response.getWriter().print("请求找不到");
return;
}
// 其次再去调用对应处理器的方法
if (handler instanceof QueryUserHandler) {
((QueryUserHandler) handler).handleRequest(request, response);
}else if (handler instanceof AddUserHandler) {
((AddUserHandler) handler).handleRequest(request, response);
}
// 处理结果
} catch (Exception e) {
e.printStackTrace();
}
}
}
3. HttpServletHandler.java(接口)
public interface HttpServletHandler {
public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception;
}
4. AddUserHandler.java(处理器handler)
/***
* 处理器:专门处理不同业务请求的
*/
public class AddUserHandler implements HttpServletHandler{ public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { // 设置响应体的媒体类型
response.setContentType("text/plain;charset=utf-8");
// 响应
response.getWriter().print("添加成功");
}
}
servlet模拟SpringMVC的更多相关文章
- 带着新人简单看看servlet到springmvc
好久都没有写博客了,不是因为自己懒了,而是总感觉自己知道的只是太少了,每次想写博客的时候都不知道怎么下手,不过最近看到一篇博客说的是springmvc,给了我比较大的兴趣,感觉一下子对整个spring ...
- struts2,servlet和springmvc的单例多例问题
struts2,servlet和springmvc的单例多例问题 原创 2017年06月12日 09:59:21 标签: struts2 / servlet / springmvc / 单例 / 多例 ...
- 文件上传(Servlet/Struts2/SpringMVC)
文件下载(Servlet/Struts2)的链接:http://www.cnblogs.com/ghq120/p/8328093.html 文件上传 Servlet实现 要实现文件上传的功能,必须在f ...
- [模拟回调] demo1模拟用字符串调用js函数 demo2模拟springmvc controller回调页面js函数
demo1. 模拟用字符串调用js 函数 function dataQuery() { var strFun = "testCallBack"; var strParam = &q ...
- servlet到springmvc的演进
1.简单看看servlet 1.1.servlet继承关系 先看看下面servlet的这个继承关系,有点印象即可(可以暂时忽略ServletConfig,这个接口就是让我们可以从web.xml文件中拿 ...
- java web学习总结(二十二) -------------------简单模拟SpringMVC
在Spring MVC中,将一个普通的java类标注上Controller注解之后,再将类中的方法使用RequestMapping注解标注,那么这个普通的java类就够处理Web请求,示例代码如下: ...
- Servlet Struts2 SpringMVC 获取参数与导出数据 方法比较
servlet中通过request.getParameter()从网页获取参数 通过request session servletContext几个域对象的setAttribute(String ,O ...
- Servlet和SpringMVC补课
1.web.xml加载顺序 http://mianhuaman.iteye.com/blog/1105522 关键点:ServletContext -> context-param -> ...
- 回顾Servlet及SpringMVC
什么是Servlet? Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库 或应用程序之间的中间层. servlet架 ...
随机推荐
- sklearn训练感知器用iris数据集
简化版代码 from sklearn import datasets import numpy as np #获取data和类标 iris = datasets.load_iris() X = iri ...
- 「HDU - 2857」Mirror and Light(点关于直线的对称点)
题目链接 Mirror and Light 题意 一条直线代表镜子,一个入射光线上的点,一个反射光线上的点,求反射点.(都在一个二维平面内) 题解 找出入射光线关于镜子直线的对称点,然后和反射光线连边 ...
- 【HDU - 4349】Xiao Ming's Hope
BUPT2017 wintertraining(15) #8H 题意 求组合数C(n,i),i从0到n,里面有几个奇数. 题解 直接打表的话可能就直接发现规律了. 规律是n的二进制里有几个1,答案就是 ...
- zabbix 自定义 windows 监控项
zabbix获取windows服务器上数据C:\zabbix_agents\conf\zabbix_agentd.win.confUserParameter=conncount,d:\\tools\\ ...
- 【BZOJ2125】最短路(仙人掌,圆方树)
[BZOJ2125]最短路(仙人掌,圆方树) 题面 BZOJ 求仙人掌上两点间的最短路 题解 终于要构建圆方树啦 首先构建出圆方树,因为是仙人掌,和一般图可以稍微的不一样 直接\(tarjan\)缩点 ...
- 【BZOJ1152】歌唱王国(生成函数,KMP)
[BZOJ1152]歌唱王国(生成函数,KMP) 题面 BZOJ 洛谷 题解 根据\(YMD\)论文来的QwQ. 首先大家都知道普通型生成函数是\(\displaystyle \sum_{i=0}^{ ...
- 前端开发环境webstorm搭建
1. 下载node.js https://nodejs.org/en/ 2. 安装 webpack 用管理员开个命令行 (mac: open terminal) npm install webpack ...
- CSS垂直翻转与水平翻转
/*水平翻转*/ .flipx { -moz-transform:scaleX(-1); -webkit-transform:scaleX(-1); -o-transform:scaleX(-1); ...
- LOJ #2205. 「HNOI2014」画框 解题报告
#2205. 「HNOI2014」画框 最小乘积生成树+KM二分图带权匹配 维护一个\((\sum A,\sum B)\)的匹配下凸包,答案在这些点中产生. 具体的,凸包两端可以直接跑单独的\(A\) ...
- 使用jvisualVm监控本地和远程的jvm
jvisualVm是jdk自带的可视化监控工具,功能很强大,可安装各种扩展插件.本篇不打算讲解如果使用详细的功能,只讲在windows环境怎么监控本地和远端(一般是无界面的linux系统)的java进 ...