1. web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  5. version="3.1">
  6. <servlet>
  7. <servlet-name>DispatcherServlet</servlet-name>
  8. <servlet-class>amie.servlet.DispatcherServlet</servlet-class>
  9. <load-on-startup>2</load-on-startup>
  10. </servlet>
  11. <servlet-mapping>
  12. <!-- servlet拦截下所有请求,交给DispatchServlet处理 -->
  13. <servlet-name>DispatcherServlet</servlet-name>
  14. <url-pattern>/</url-pattern>
  15. </servlet-mapping>
  16. </web-app>

2. DispatcherServlet.java

  1. public class DispatcherServlet extends HttpServlet {
  2.  
  3. private static final long serialVersionUID = 116714888769576151L;
  4.  
  5. protected void doGet(HttpServletRequest request, HttpServletResponse response)
  6. throws ServletException, IOException {
  7.  
  8. try {
  9. // 获取请求URI
  10. String requestURI = request.getRequestURI();
  11. // 请求分发,根据不同请求URL,调用不同的业务处理器
  12. // 注意事项:一个处理器handler类,只有一个方法
  13. // 这个分发逻辑需要好好设计一下
  14. Object handler = null;
  15. // 首先根据请求URL,查找到对应的处理器
  16. if ("/queryUser".equals(requestURI)) {
  17. handler = new QueryUserHandler();
  18. } else if ("/addUser".equals(requestURI)) {
  19. handler = new AddUserHandler();
  20. }
  21. if (handler == null) {
  22. // 设置响应体的媒体类型
  23. response.setContentType("text/plain;charset=utf-8");
  24. // 响应
  25. response.getWriter().print("请求找不到");
  26. return;
  27. }
  28. // 其次再去调用对应处理器的方法
  29. if (handler instanceof QueryUserHandler) {
  30. ((QueryUserHandler) handler).handleRequest(request, response);
  31. }else if (handler instanceof AddUserHandler) {
  32. ((AddUserHandler) handler).handleRequest(request, response);
  33. }
  34.  
  35. // 处理结果
  36. } catch (Exception e) {
  37. e.printStackTrace();
  38. }
  39. }
  40.  
  41. }

3. HttpServletHandler.java(接口)

  1. public interface HttpServletHandler {
  2. public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception;
  3. }

4. AddUserHandler.java(处理器handler)

  1. /***
  2. * 处理器:专门处理不同业务请求的
  3. */
  4. public class AddUserHandler implements HttpServletHandler{
  5.  
  6. public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
  7.  
  8. // 设置响应体的媒体类型
  9. response.setContentType("text/plain;charset=utf-8");
  10. // 响应
  11. response.getWriter().print("添加成功");
  12. }
  13. }

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. LTI系统对WSS Processes的作用

    本文主要专注讨论LTI系统对WSS Process的影响.WSS Process的主要特性有mean以及correlation,其中correlation特性在滤波器设计,信号检测,信号预测以及系统识 ...

  2. java8的版本对组合式异步编程

    讨论了Java 8中的函数式数据处理,它可以将对集合数据的多个操作以流水线的方式组合在一起.本节继续讨论Java 8的新功能,主要是一个新的类CompletableFuture,它是对65节到83节介 ...

  3. python爬取豆瓣前25个影片内容的正则表达式练习

    通过python正则表达式获取豆瓣top250的第一页的25个影片排名,影片名字,影片连接,导演,主演,上映日期,国家,剧情,评分,评价人数的内容 网页html内容: <ol class=&qu ...

  4. IT人员必须掌握的10项软技能

    现代企业的IT部门员工在具备技术能力的同时,还需要掌握一些软技能.现在来看这些软技能其实并不是什么新鲜事物,只是IT人员所需的这些软技能的范围与数量正在不断增加着. IT人员需要具备哪些技术能力,要取 ...

  5. 子网站不继承父的WEBCONFIG

    环境 W10 IIS10  / WIN2012 IIS上以前有一个网站,后来写了一个接口项目,需要当成WEB应用程序挂到这网站下. 在右击添加应用程序,指向接口项目后.发现访问不了接口项目.死活配置有 ...

  6. Jmeter工具之上传图片,上传音频文件接口

    https://www.jianshu.com/p/f23f7fe20bf3 互联网时代的来临,不同手机上安装的APP,还是PC端的应用软件或多或多都会涉及到图片的上传,那么在Jmeter工具如何模拟 ...

  7. http_proxy_module模块常用参数

    Nginx的upstream模块相当于是建立一个函数库一样,把后端的服务器地址放在了一个池子里,而proxy模块则是从这个池子里调用了这些服务器. http_proxy_module模块常用参数: p ...

  8. js判断一个字符串是以某个字符串开头

    方法1: substr() 方法 if("123".substr(0, 2) == "12"){ console.log(true); } 方法2: subst ...

  9. OpenLayers学习笔记(三)— QML与HTML通信之 地图上点击添加自由文本

    实现在地图随意点击,弹出文本输入框,输入任意文字,完成自由文本添加的功能 作者: 狐狸家的鱼 GitHub:八至 本文链接:地图上点击添加自由文本 关于如何QML与HTML通信已经在上一篇文章 QML ...

  10. 组件之间的数据传递--Vuex

    安装Vuex: npm install Vuex -S 在main.js中引入 import Vue from 'vue' import App from './App' import Vuex fr ...