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" id="WebApp_ID" version="2.5"><display-name>20181022MVC</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><servlet><description></description><display-name>ControllerServlet</display-name><servlet-name>ControllerServlet</servlet-name><servlet-class>com.igeek.mvc.controller.ControllerServlet</servlet-class><init-param><param-name>addUser</param-name><param-value>com.igeek.mvc.controller.AddUserController</param-value></init-param><init-param><param-name>deleteUser</param-name><param-value>com.igeek.mvc.controller.DeleteUserController</param-value></init-param><init-param><param-name>updateUser</param-name><param-value>com.igeek.mvc.controller.UpdateUserController</param-value></init-param><init-param><param-name>queryUser</param-name><param-value>com.igeek.mvc.controller.QueryUserController</param-value></init-param><init-param><param-name>addStu</param-name><param-value>com.igeek.mvc.controller.AddStuController</param-value></init-param></servlet><servlet-mapping><servlet-name>ControllerServlet</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>
</web-app>

2.创建controller接口:

package com.igeek.mvc.controller;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** @author www.igeehome.com* * TODO** 2018年10月22日下午6:37:32*/
public interface Controller {public String execute(HttpServletRequest request,HttpServletResponse response);
}

3.所有控制类继承controller接口

package com.igeek.mvc.controller;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** @author www.igeehome.com* * TODO** 2018年10月22日下午6:58:11*/
public class AddStuController implements Controller {@Overridepublic String execute(HttpServletRequest request, HttpServletResponse response) {System.out.println("添加学生的Controller");System.out.println("调用添加学生的service");return "addStuSuc.jsp";}}
package com.igeek.mvc.controller;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** @author www.igeehome.com* * TODO** 2018年10月22日下午6:38:46*/
public class DeleteUserController implements Controller {@Overridepublic String execute(HttpServletRequest request, HttpServletResponse response) {System.out.println("删除用户的controller");return "deleteUserSuc.jsp";}}

4.创建servlet:

package com.igeek.mvc.controller;import java.io.IOException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Map;import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class ControllerServlet*/
public class ControllerServlet extends HttpServlet {private static final long serialVersionUID = 1L;Map<String,Controller> controllers = new Hashtable<>();public ControllerServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String url = request.getRequestURI().toString();System.out.println("请求的url:"+url);//解析URL得到keyint startIndex = url.lastIndexOf("/")+1;int endIndex = url.indexOf(".do");url = url.substring(startIndex, endIndex);System.out.println("key:"+url);System.out.println(controllers);//通过Key取出controller对象Controller controller = controllers.get(url);//执行controller的execute方法String jspName = controller.execute(request, response);response.sendRedirect(jspName);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}@Overridepublic void init(ServletConfig config) throws ServletException {//获取初始化参数,初始化所有的controller对象Enumeration<String> names = config.getInitParameterNames();while(names.hasMoreElements()){String name = names.nextElement();String className = config.getInitParameter(name);//利用反射创建对象try {Class<?> clazz = Class.forName(className);Controller obj = (Controller)clazz.newInstance();//将对象添加到集合中 controllers.put(name, obj);} catch (Exception e) {e.printStackTrace();}}}}

servlet实现mvc相关推荐

  1. 信息管理系统(Servlet+jsp+mvc+jdbc)

    技术需求: Servlet+jsp+mvc+jdbc 软件需求:开发工具:myEclipse 数据库: mySql 服务器:tomcat 浏览器:Firefox 硬件需求: 一台电脑 功能需求: 完成 ...

  2. 框架:servlet和MVC

    一.概述 B/S与C/S最主要的区别在于分发方面. 二.通过Servlet讲解MVC框架的基本实现原理  servlet里需要参数,转换类型,处理业务逻辑和写死跳转页面,而且取得参数都是字符串.  这 ...

  3. java web: Servlet JSP MVC

    Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容. JSP ...

  4. 基于Servlet的MVC模式用户登录实例

    关于MVC模式的简单解释 M Model,模型层,例如登录实例中,用于处理登录操作的类: V View,视图层,用于展示以及与用户交互.使用html.js.css.jsp.jQuery等前端技术实现: ...

  5. servlet入门MVC

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

  6. 基于Servlet的MVC模式

    MVC模式介绍 MVC的全名是Model View Controller,是模型(model)-视图 (view)-控制器(controller)的缩写,是一种软件设计典范. 它是用一种业务逻辑.数据 ...

  7. 【Servlet】Servlet与MVC分层开发

    处理数据的业务逻辑servlet与开发分层 一.处理数据的业务逻辑servlet 1.Servlet是什么 1.1Servlet是运行在tomcat服务器端的一个java程序: 2.Servlet能干 ...

  8. Servlet学习-MVC开发模式

    MVC模型: M:模型层(业务,dao,持久.) V:视图层 C:controller,控制器 1.业务逻辑代码和界面分离 2.把常用的代码(数据库连接和操作)封装到工具类 数据库每张表要对应一个do ...

  9. MVC 模式/Servlet/JSP 编译原理剖析:Servlet 组件到底属于 MVC 模式的哪一层?

    文章目录 前言 一.回忆什么是 MVC 模式? 1.1.Model.View.Controller 组件介绍 1.2.明确 View 与 Controller 组件区别 二.什么是 Servlet? ...

最新文章

  1. 服务器融合系统,全球领先的企业级服务器、存储、融合系统及解决方案-H3C与HPE...
  2. ngCloak 实现 Angular 初始化闪烁最佳实践
  3. 采样次数不同平均值不一样_不同的真石漆装饰效果也是不一样的
  4. eclipse远程调试liunx下的tomcat
  5. 【01】如何在XMind中排列自由主题
  6. 空字符串(“”)和null的区别
  7. Cannot convert a symbolic Tensor (simple_rnn/strided_slice:0) to a numpy array. 报错 (解决方法)
  8. unity中显示fps
  9. 把老婆训练成女黑客的漏洞大神黄正|宅客故事
  10. 【山外笔记-计算机网络·第7版】第10章:计算机网络重要概念
  11. ps保存图片时为了可以发送到微信中(微信大于25M的图片不能发送) 应该这样保存图片!!!...
  12. VS Code利用CMake工具编译Cpp文件报错
  13. Centos7中创建RSA非对称密钥对及搭建私有CA并为客户端颁发证书
  14. 带宽,吞吐量描述与区别 影响吞吐量因素
  15. 上海人工智能领军企业中集飞瞳ceaspectusS成熟船公司航运人工智能,集装箱运输各节点验箱上报箱况+箱轨迹,集装箱套箱云堆场
  16. AcWing417. 不高兴的津津
  17. 聊城大学计算机科学导论期末考试,09101计算机导论试卷a(含答案
  18. 2020年团体程序设计天梯赛-总决赛 L3-3 可怜的复杂度
  19. 黑马头条(学习笔记)
  20. ubuntu mate在树莓派2上的安装

热门文章

  1. zz推荐的软件测试英文网站
  2. 网御神州和北京邮电大学成立信息安全联合实验室(2007-07-04)
  3. 7_26 day28 上节课 复习 27min
  4. 解决 Chrome 请停用以开发者模式运行的扩展程序
  5. PLSQL 的简单命令之三
  6. windows bat 设置代理上网脚本bat
  7. 高性能javascript读书笔记(三.DOM 编程2)
  8. Linux 之 利用Google Authenticator实现用户双因素认证
  9. Windows下Jenkins的详细安装及使用
  10. Ubuntu Server 16.04 安装并用两块硬盘做RAID1