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. codeforces545C

    Woodcutters CodeForces - 545C Little Susie listens to fairy tales before bed every day. Today's fair ...

  2. Nginx 如何处理上游响应的数据

    陶辉93 一个非常重要的指令 proxy_buffer_size 指令限制头部响应header最大值 proxy_buffering 指令主要是指 上游服务器是否接受完完整包体在处理 默认是on 也就 ...

  3. FFT算法小结

    都应该知道多项式是什么对吧(否则学什么多项式乘法) 我们用\(A(x)\)表示一个\(n-1\)次多项式,即\(A(x)=\sum_{i=0}^{n-1} {a_i}*x^i\) 例如\(A(x)=x ...

  4. 【XSY2470】lcm 数学

    题目大意 \(t\)组询问, 每组询问给定\(n\),求\(\sum_{k=1}^n[n,k]\),其中\([a,b]\)表示\(a\)和\(b\)的最小公倍数 . \(t\leq 300000,n\ ...

  5. Web页面执行shell命令

    本文以apache为web服务器为例 安装apache服务yum -y install httpd 启动apachesystemctl restart httpd 创建shell脚本cd /var/w ...

  6. Add Zabbix Agent

    添加第三方源进行安装CentOS/RHEL 7:# rpm -Uvh http://repo.zabbix.com/zabbix/2.2/rhel/7/x86_64/zabbix-release-2. ...

  7. 【BZOJ5322】[JXOI2018]排序问题(模拟)

    [BZOJ5322][JXOI2018]排序问题(模拟) 题面 BZOJ 洛谷 题解 这题就显得很呆. 显然就是每次找到\([l,r]\)中出现次数最小的那个数并且放一个. 然后随便模拟一下就好了Qw ...

  8. LVS-Keepalived高可用集群(NAT)

    LEA-6-LVS-NAT+Keepalived高可用集群-------client-----------------主LVS-----------------从LVS---------------- ...

  9. Jupyter-Notebook服务器自定义密码

    往期回顾 Anaconda安装:https://www.cnblogs.com/dotnetcrazy/p/9158715.html 基本知识导航篇:https://www.cnblogs.com/d ...

  10. docker cmd list

    436 wget -qO- https://get.docker.com/ | sh 437 sudo apt-get update 438 sudo apt-get install -y docke ...