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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc
http://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>();
@Override
public void saveOrUpdate(User user) {
map.put(user.getId(), user);
}
@Override
public User getUserById(Integer id) {
if(map.containsKey(id)){
return (User)map.get(id);
}
return new User();
}
@Override
public void delete(Integer id) {
map.remove(id);
}
@Override
public List<User> getUsers() {
List<User> list=new ArrayList<User>();
for(Integer key : map.keySet()){
list.add((User)map.get(key));
}
return list;
}
@Override
public 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;
@Override
public 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/

SpringMVC、SpringMVC XML配置(纯XML方式)的更多相关文章

  1. IDEA用maven创建springMVC项目和配置(XML配置和Java配置)

    1.DEA创建项目 新建一个maven project,并且选择webapp原型. 然后点击next 这里的GroupId和ArtifactID随意填写,但是ArtifactID最好和你的项目一名一样 ...

  2. Mybatis的xml配置(mybatis-config.xml)精简笔记

    老规矩,看着官方文档学 首先,我们需要知道的是,在MyBatis 的xml配置文件中,这些影响 MyBatis 行为的属性之间的设置是有先后顺序的.配置的先后顺序依照properties, setti ...

  3. 2.6 XML配置:XML文件节点说明

    来源:http://blog.csdn.net/five3/article/details/25907693 TestNG的DTD检查文件:http://testng.org/testng-1.0.d ...

  4. Spring集成Kafka-注解,xml配置2种方式实现

    准备工作: 1.安装kafka+zookeeper环境 2.利用命令创建好topic 参考官网 http://kafka.apache.org/documentation/ 一XML配置文件方式实现

  5. spring通过注解依赖注入和获取xml配置混合的方式

    spring的xml配置文件中某个<bean></bean>中的property的用法是什么样的? /spring-beans/src/test/java/org/spring ...

  6. springMVC配置(XML配置详解)

    原文出自:http://www.newasp.net/tech/71609.html web.xml配置: servlet> <servlet-name>dispatcher< ...

  7. SpringMVC 常用applicationContext.xml、web.xml、servlet-mvc.xml简单配置

    在进行学习配置文件之前,为了加深对框架的认识,简单的做了SSM框架的简单实验.然后画出listAll查询方法的整个过程的思维导图. 整个过程中的web.xml.SpringMVC.xml.applic ...

  8. 02_Spring Bean的装配模式_基于XML配置方式

    一.三种实例化Bean的方式 1.使用类构造器实例化(默认无参数) <bean id="bean1" class="com.demo1.Bean1"> ...

  9. Bean的基于XML配置方式

    基于XML配置 Beans.xml <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns= ...

  10. Spring 基于xml配置方式的AOP(8)

    1.ArithmeticCalculator.java 1 package com.proc; 2 3 public interface ArithmeticCalculator { 4 int ad ...

随机推荐

  1. js 异步流程控制之 avQ(avril.queue)

    废话前言 写了多年的js,遇到过最蛋疼的事情莫过于callback hell, 相信大家也感同身受. 业界许多大大也为此提出了很多不错的解决方案,我所了解的主要有: 朴灵 event proxy, 简 ...

  2. 为openwrt编译xd-h3c

    西电老校区,openwrt上用的认证软件. 在package下新建一目录"xd-h3c",在里面新建一个Makefile,内容如下: include $(TOPDIR)/rules ...

  3. Android ListView A~Z快速索引(改进版)

    上一篇文章虽然实现了ListView 快速索引的效果,但是有一个小小的Bug.这个Bug我在前面也说了,这篇文章就来解决这个Bug. 我研究的时候发现只要showBg值为true,中间的字母就显示,而 ...

  4. VMware网络模式介绍(下篇)

    VMware网络模式介绍 VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式). Bridged 模式: 在桥接模式下,VMwa ...

  5. Lipschitz连续【zz】

    转载地址:http://moosewoler.blog.163.com/blog/static/6986605201242643122296/ 李普希兹连续是以德国数学家Rudolf Lipschit ...

  6. java中如何将char数组转化为String

    1.直接在构造String时建立. char data[] = {'s', 'g', 'k'}; String str = new String(data); 2.String有方法可以直接转换. S ...

  7. 一个月AS2.0总结。

    来这家公司一个月了,从最初学习它的木块,到流程,到组件,到改动,到自己做. 感觉好快. 1.AS2.0确实比較3.0差距太大.假设不是公司必须使用2.0,我是真不想使用. 2.代码重用性差.相同的代码 ...

  8. MySQL Server 5.0 下载与 安装指南[图文] (安装到非系统路径+设置root账号相应password)

    软件下载:点我前往下载 安装需知:相应mysql版本号为V5.0 ------------------------------------------------- 安装步骤例如以下: Step1 首 ...

  9. asp.net中的绝对路径和相对路径

    一.关于相对路径和绝对路径相对路径转绝对路径一般,我们在ASP.NET网站中往往需要把一个相对路径转化为绝对路径.通常是用Server.MapPath()方法.比如网站根目录下有 个"Upl ...

  10. ajax封装

    /** * ITCAST WEB * Created by zhousg on 2016/5/24. */ /* * 1. 请求的类型 type get post * 2. 请求地址 url * 3. ...