1、引入SrpingMVC所使用的Java包:

cglib-nodep-2.1_3.jar、commons-logging.jar、spring-aspects-4.1.7.RELEASE.jar、spring-beans-4.1.7.RELEASE.jar、spring-context-4.1.7.RELEASE.jar

、spring-core-4.1.7.RELEASE.jar、spring-web-4.1.7.RELEASE.jar、spring-webmvc-4.1.7.RELEASE.jar

2、新建Web项目,配置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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>springmvc</display-name><!-- 配置Spring --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 配置SpringMVC的编码格式 --><filter>  <filter-name>CharacterEncodingFilter</filter-name>  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  <init-param>  <param-name>encoding</param-name>  <param-value>UTF-8</param-value>  </init-param>  </filter><filter-mapping>  <filter-name>CharacterEncodingFilter</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping> <!-- 加载其他的配置文件 --> <context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring-servlet.xml</param-value></context-param>  <!-- 配置Spring的前置控制器DispatcherServlet --> <servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><!-- 配置Spring的url后缀 --> <servlet-mapping><servlet-name>spring</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>
</web-app>

3、配置spring-servlet.xml(基中的部分MVC的配置可另外再分一个bean.xml配置,这里为了方便统一放在一个里面):

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd"><!-- controller方法调用规则:通过url中的method参数指定要执行的controller方法-->  <bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">  <property name="paramName" value="action" />  <property name="defaultMethodName" value="view" /></bean><!-- 配置MVC的前缀(prefix)和后缀(suffix) --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <!--  <property name="prefix" value="/WEB-INF/" /> --><property name="suffix" value=".jsp" /></bean><!-- 以下是 控制器的配置 --><bean name="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" ><property name="order" value="1" /><property name="mappings"><props><prop key="user.do">userController</prop><prop key="index.do">indexController</prop></props></property></bean>    <bean name="userController"  class="cn.raffaello.controller.UserController"><property name="userIService" ref="userIService"></property></bean><bean name="indexController"  class="cn.raffaello.controller.IndexController" /><!-- ServiceBean的配置 --><bean name="userIService" class="cn.raffaello.service.impl.UserServiceImpl" />
</beans>

4、新建Model,User:

public class User {private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

5、新建ServiceBean并实现一个模拟的数据保存添加操作:

public interface UserIService {void saveOrUpdate(User user);User getUserById(Integer id);void delete(Integer id);List<User> getUsers();Integer getNewId();
}
public class UserServiceImpl implements UserIService {private Map<Integer,Object> map=new HashMap<Integer,Object>();private Map<String,Integer> idCount=new HashMap<String,Integer>();@Overridepublic void saveOrUpdate(User user) {map.put(user.getId(), user);}@Overridepublic User getUserById(Integer id) {if(map.containsKey(id)){return (User)map.get(id);}return new User();}@Overridepublic void delete(Integer id) {map.remove(id);}@Overridepublic List<User> getUsers() {List<User> list=new ArrayList<User>();for(Integer key : map.keySet()){list.add((User)map.get(key));}return list;}@Overridepublic Integer getNewId() {if(!idCount.containsKey("ids")){Integer id=1;idCount.put("ids", id);return id;}else{Integer id=idCount.get("ids");id=id+1;idCount.put("ids", id);return id;}}
}

6、新建控制器UserController:

public class UserController implements Controller{private UserIService userIService;@Overridepublic ModelAndView handleRequest(HttpServletRequest req,HttpServletResponse res) throws Exception {String param="";param=req.getParameter("param");//新增控制器跳转if(param.trim().equals("add")){return new ModelAndView("/WEB-INF/userAdd");}else if(param.trim().equals("edit")){//编辑控制器跳转Integer id=-1;if(!req.getParameter("userId").trim().equals("")){id=Integer.parseInt(req.getParameter("userId").trim());}User user=userIService.getUserById(id);req.setAttribute("user", user);return new ModelAndView("/WEB-INF/userAdd");}else if(param.trim().equals("userList")){//列表页面跳转List<User> list=userIService.getUsers();req.setAttribute("userList", list);return new ModelAndView("/WEB-INF/userList");}else if(param.trim().equals("save")){//新增的保存操作User user=new User();String name=req.getParameter("name").trim();user.setId(userIService.getNewId());user.setName(name);userIService.saveOrUpdate(user);List<User> list=userIService.getUsers();req.setAttribute("userList", list);return new ModelAndView("/WEB-INF/userList");}else if(param.trim().equals("update")){//修改的保存操作Integer id=-1;if(!req.getParameter("userId").trim().equals("")){id=Integer.parseInt(req.getParameter("userId").trim());}String name=req.getParameter("name").trim();User user=userIService.getUserById(id);user.setName(name);userIService.saveOrUpdate(user);List<User> list=userIService.getUsers();req.setAttribute("userList", list);return new ModelAndView("/WEB-INF/userList");}else if(param.trim().equals("delete")){//删除操作Integer id=-1;if(!req.getParameter("userId").trim().equals("")){id=Integer.parseInt(req.getParameter("userId").trim());}userIService.delete(id);List<User> list=userIService.getUsers();req.setAttribute("userList", list);return new ModelAndView("/WEB-INF/userList");}else if(param.trim().equals("detail")){//详细用户页面Integer id=-1;if(!req.getParameter("userId").trim().equals("")){id=Integer.parseInt(req.getParameter("userId").trim());User user=userIService.getUserById(id);req.setAttribute("user", user);}return new ModelAndView("/WEB-INF/userDetail");}else if(param.trim().equals("list")){// list列表List<User> list=userIService.getUsers();req.setAttribute("userList", list);return new ModelAndView("/WEB-INF/userList");}return new ModelAndView("fail");//return forword("stu/studentList", context);  //同样也可以使用forword进行页面跳转//使用Map向前台输出数据时,获取操作同Request一样,可以在前台使用${名字}来获取如下例,可以使用${message}获取//Map<String,String> resultMap = new HashMap<String,String>();  //resultMap.put("message", "欢迎来到首页111");  //return new ModelAndView("index",resultMap);}public UserIService getUserIService() {return userIService;}public void setUserIService(UserIService userIService) {this.userIService = userIService;}
}

7、然后就是页面啦:

新增页面:

 <body><a href="user.do?param=userList">用户列表</a><h3>新增用户</h3><form action="user.do" method="post"><c:if test="${user!=null }"><input type="hidden" name="param" value="update" /></c:if><c:if test="${user==null }"><input type="hidden" name="param" value="save" /></c:if><input type="hidden" name="userId" value="${user.id }" />用户名:<input type="text" name="name" value="${user.name }"  /><input type="submit" value="提交" /></form></body>

访问地址:http://localhost/user.do?param=add

修改页面也是此页面,访问地焉http://localhost/user.do?param=edit&userId=12

用户信息页面:

 <body><a href="user.do?param=userList">用户列表</a><h3>用户详细信息:</h3><ul><li>ID:${user.id }</li><li>用户名:${user.name }</li></ul></body>

用户列表页面:

<body><a href="user.do?param=add">新增用户</a><h3>用户列表:</h3><table><tr><td>ID</td><td>姓名</td><td>操作</td></tr><c:forEach items="${userList }" var="user"><tr><td>${user.id }</td><td>${user.name }</td><td><a href="user.do?param=edit&userId=${user.id }">修改</a></td></tr></c:forEach></table></body>

下图是效果图:

其他的SpringMVC文档:

http://liudeh-009.iteye.com/blog/1267880

http://jinnianshilongnian.iteye.com/blog/1594806

http://www.importnew.com/15141.html

Spring各个版本下载:

http://repo.spring.io/release/org/springframework/spring/

转载于:https://www.cnblogs.com/raphael5200/p/5114730.html

SpringMVC、SpringMVC XML配置(纯XML方式)相关推荐

  1. android xml配置,Android XML设置z-Index

    基本上我有2个线性布局.用户单击按钮时,一个线性布局将展开或折叠.另一个将始终显示在顶部.这里是我的xml:Android XML设置z-Index android:layout_width=&quo ...

  2. SpringAop两种配置:xml配置和注解方式

    一,什么是SpringAop? 所谓的springaop就是面向切面编程,就是在你的原有项目功能上,通过aop去添加新的功能,这些功能是建立在原有的功能基础上的,而且不会修改原来的动能代码以及功能逻辑 ...

  3. IDEA + Maven创建SpringMVC项目和XML配置

    IDEA + Maven +SpringMVC + XML配置 1. 运行出默认 index.jsp 页面 1.1 构建Maven项目 1.2 设置pom.xml 1.3 设置Spring MVC框架 ...

  4. 【SpringMVC 笔记】SpringMVC 原理 + 入门项目(xml 配置版 vs 注解版)

    SpringMVC 入门项目 什么是 SpringMVC? 中心控制器 SpringMVC 执行原理 执行流程 xml 配置版 1.创建一个 Web 项目 2.pom.xml 中导入 SpringMV ...

  5. Spring源码之Bean的注册(使用XML配置的方式)

    本文分析的Spring源码是5.2.2版本,使用Gradle进行管理. 一.Bean的注册,先来看通过XML配置Bean的方式 1.配置applicationContext.xml: <?xml ...

  6. Spring 基于xml配置方式的AOP

    我们具体用代码来说明: 1.ArithmeticCalculator.java 1 package com.proc; 2 3 public interface ArithmeticCalculato ...

  7. 基于注解的Spring MVC(所需jar包,web.xml配置,Spring文件配置,@Controller,@RequestMapping,@RequestParam,model填参,EL取值)

    1.添加jar 2.web.xml配置: <?xml version="1.0" encoding="UTF-8"?> <web-app ve ...

  8. spring整合hibernate(注解、xml)applicationContext.xml配置

    每次ssh框架整合都很麻烦,今天有空余时间总结下(主要总结spring+hibernate): 1.注解方式整合: applicationContext.xml配置文件: <?xml versi ...

  9. pom.xml设置mysql连接_maven工程配置pom.xml实现mybatis的访问数据库操作

    pom.xml配置: pom.xml 这个配置还有不足请在下方给出建议 I:  我这里测试三个 : 分别是有@的 DemoMapper(接口): IDemoMapper.interface packa ...

  10. SpringMVC4零配置--web.xml

    servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置. ServletContainerInitiali ...

最新文章

  1. 做百度推广需要投入多少费用?
  2. ICCV2021|单目3D目标检测真的需要伪激光雷达吗?
  3. 强烈推荐16 款牛逼的 IDEA 插件,让你开发速度飞起来!
  4. PopupMenu消失(Dismiss)抓住
  5. 分布式事务一致性解决方案
  6. 这本造价500万的“黑科技”日历,用377张爆美插画给你365天理想生活
  7. java csv 导出_java实现CSV文件输出
  8. 1.5 编程基础之循环控制 44 第n小的质数
  9. Spoken English Practice (I'm having whatever you're having)
  10. 基于php校园失物招领,校园失物招领系统的设计.doc
  11. 【toplink】 位居第一的Java对象关系可持续性体系结构
  12. icp光谱仪的工作原理_创想仪器(GLMY)光电直读光谱仪和X荧光光谱仪的区别
  13. 关于代码整理重构小记
  14. 把所有数据库厂商拉在一起,会发生什么?
  15. java int转byte出现负数 byte转int的解决
  16. windows 微信手机端退出登录,pc电脑端不退出的奇淫技巧
  17. cmd打开记事本并写字_Windows中的记事本和写字板之间有什么区别?
  18. java id pid 递归,父子结构数据(id,pid)递归查询所有子id合集和父id合集
  19. C语言简单教程一:编程的第一课
  20. 搭建一个国内高可用的IPFS网关节点,低价打造去中心化无限存储节点

热门文章

  1. 云服务器(ubuntu)搭建nginx-rtmp服务器 实现直播功能(纯命令行操作)
  2. Win32ASM学习[16] :乘除指令: MUL、IMUL、DIV、IDIV
  3. 哈希表、红黑树、B树、B+树基础
  4. Linux:以K、M、G查看文件大小;
  5. IDEA —— Debug调试模式
  6. 宏定义和函数有何区别
  7. 什么是双亲委派,有什么好处?
  8. openCV错误解决方案:无法启动此程序,因为计算机中丢失opencv_world310.dll
  9. Django接口文档的生成
  10. 前后端开发实用网站推荐