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的更多相关文章

  1. 带着新人简单看看servlet到springmvc

    好久都没有写博客了,不是因为自己懒了,而是总感觉自己知道的只是太少了,每次想写博客的时候都不知道怎么下手,不过最近看到一篇博客说的是springmvc,给了我比较大的兴趣,感觉一下子对整个spring ...

  2. struts2,servlet和springmvc的单例多例问题

    struts2,servlet和springmvc的单例多例问题 原创 2017年06月12日 09:59:21 标签: struts2 / servlet / springmvc / 单例 / 多例 ...

  3. 文件上传(Servlet/Struts2/SpringMVC)

    文件下载(Servlet/Struts2)的链接:http://www.cnblogs.com/ghq120/p/8328093.html 文件上传 Servlet实现 要实现文件上传的功能,必须在f ...

  4. [模拟回调] demo1模拟用字符串调用js函数 demo2模拟springmvc controller回调页面js函数

    demo1. 模拟用字符串调用js 函数 function dataQuery() { var strFun = "testCallBack"; var strParam = &q ...

  5. servlet到springmvc的演进

    1.简单看看servlet 1.1.servlet继承关系 先看看下面servlet的这个继承关系,有点印象即可(可以暂时忽略ServletConfig,这个接口就是让我们可以从web.xml文件中拿 ...

  6. java web学习总结(二十二) -------------------简单模拟SpringMVC

    在Spring MVC中,将一个普通的java类标注上Controller注解之后,再将类中的方法使用RequestMapping注解标注,那么这个普通的java类就够处理Web请求,示例代码如下: ...

  7. Servlet Struts2 SpringMVC 获取参数与导出数据 方法比较

    servlet中通过request.getParameter()从网页获取参数 通过request session servletContext几个域对象的setAttribute(String ,O ...

  8. Servlet和SpringMVC补课

    1.web.xml加载顺序 http://mianhuaman.iteye.com/blog/1105522 关键点:ServletContext -> context-param -> ...

  9. 回顾Servlet及SpringMVC

    什么是Servlet? Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库 或应用程序之间的中间层. servlet架 ...

随机推荐

  1. 微信小程序——demo合集及简单的文档解读【五】

    官方Demo https://github.com/wechat-miniprogram/miniprogram-demo 其他Demo https://www.cnblogs.com/ytkah/p ...

  2. tp5命令行基础介绍

    查看指令 生成模块 生成文件 生成类库映射文件 生成路由缓存文件 生成数据表字段缓存文件 指令扩展示例 命令行调试 命令行颜色支持 调用命令 查看指令 命令行工具需要在命令行下面执行,请先确保你的ph ...

  3. 使用 windows server 2012 性能监视器

    监控Windows server的内存.CPU.磁盘IO等性能 配置方法: 打开Aministrator Tools --> Performance Monitor Performances - ...

  4. 洛谷P3602 Koishi Loves Segments(贪心,multiset)

    洛谷题目传送门 贪心小水题. 把线段按左端点从小到大排序,限制点也是从小到大排序,然后一起扫一遍. 对于每一个限制点实时维护覆盖它的所有线段,如果超过限制,则贪心地把右端点最大的线段永远删去,不计入答 ...

  5. Android热点回顾第一期

    本文由 ImportNew - 陈强 翻译自 androidweekly.如需转载本文,请先参见文章末尾处的转载要求. Importnew注:欢迎Android爱好者参与翻译文中提及的教程,请私信联系 ...

  6. Codeforces | CF1029D 【Concatenated Multiples】

    \(qwq\)昨天晚上\(Div.3\)过了这道题...早上交了\(1A\)...看在\(CF\)上\(hack\)的情况并不乐观而且也没人来交这题的份上...我决定发一篇题解帮\((zhuang)\ ...

  7. C# 新语法收集

    内联变量 使用int.tryparst时,先要申明变量,用于out参数 int d; int.tryparse(s,out d); 使用内联变量写法可以如下.功能一样简化了写化 int.trypars ...

  8. TCP/UDP区别

    一:1. 大体上来说,TCP和UDP都是通过Internet发送数据包的协议.都建立在Internet协议上.就是无论你是用TCP协议还是用UDP协议发送数据包,都会被发送到IP地址: 2.数据包的处 ...

  9. 2018-2019 ACM-ICPC Pacific Northwest Regional Contest C Contest Setting(DP)

    比赛链接:Contest Setting C题 题意:$n$道题目,每道题目难度为$ai$,选择$k$道难度不同的题目,有多少种选择方案.$1<=k<=n<=1000,1<=a ...

  10. Docker部署Jenkins测试环境

    安装docker环境 yum install epel-release -y && yum install docker -y 如果是高手需要docker-compose的话就再装个d ...