- 浏览: 26050 次
- 性别:
- 来自: 长沙
文章分类
最新评论
本章是个小示例,使用spring mvc 模拟student对象的增删改查
一、spring mvc 注解:
1、@Controller 声明控制器
2、@RequestMapping 请求映射/请求路径
3、@RequestParam 请求参数
4、ModelAndView 返回模型和视图
二、spring 中文编码过滤器,添加在web.xml;
三、jsp 遍历HashMap中的对象,并取对象中的属性
四、ModelAndView返回模型和视图:
五、SpringMVC对象属性自动封装
六、内部重定向与转发:
项目源码:
web.xml
spring-mvc.xml
Student.java
StudentController.java
list.jsp
add.jsp
update.jsp
访问路径:
http://localhost:8080/SpringMvc02/student/list.do
一、spring mvc 注解:
1、@Controller 声明控制器
@Controller public class StudentController { //.... }
2、@RequestMapping 请求映射/请求路径
@RequestMapping("/student") public class StudentController { //访问路径,项目路径/student @RequestMapping("/list") public ModelAndView list() { //访问路径,项目路径/student/list } }
3、@RequestParam 请求参数
@RequestMapping("/preSave") public ModelAndView preSave(@RequestParam(value = "id", required = false) String id){ //参数id } @RequestMapping("/save") public ModelAndView save(Student student){ //默认缺省参数,可传对象 }
4、ModelAndView 返回模型和视图
@RequestMapping("/delete") public ModelAndView delete(Student student) { studentMap.remove(student.getId()); ModelAndView mav = new ModelAndView(); mav.addObject("studentList", studentMap); mav.setViewName("student/list"); return mav; }
二、spring 中文编码过滤器,添加在web.xml;
<filter> <filter-name>encodingFilter</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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
三、jsp 遍历HashMap中的对象,并取对象中的属性
<c:forEach var="student" items="${studentList }"> <tr> <td>${student.value.id }</td> <td>${student.value.name }</td> <td>${student.value.age }</td> <td> <a href="${pageContext.request.contextPath}/student/preSave.do?id=${student.value.id}">修改</a> <a href="${pageContext.request.contextPath}/student/delete.do?id=${student.value.id}">删除</a> </td> </tr> </c:forEach>
四、ModelAndView返回模型和视图:
/** * 跳转修改或新增页面 * * @param id * @return */ @RequestMapping("/preSave") public ModelAndView preSave( @RequestParam(value = "id", required = false) String id) { ModelAndView mav = new ModelAndView(); if (id != null) { mav.addObject("student", studentMap.get(Integer.parseInt(id))); mav.setViewName("student/update"); } else { mav.setViewName("student/add"); } return mav; }
五、SpringMVC对象属性自动封装
/** * 保存,有则修改,没有则 * * @param student * @return */ @RequestMapping("/save") public String save(Student student) { if (student.getId() == null) { // 新增id自动增1 identityId += 1; student.setId(identityId); studentMap.put(student.getId(), student); } else { // 修改则直接覆盖原有数据 studentMap.put(student.getId(), student); } //转发 return "redirect:/student/list.do"; //重定向 // return "redirect:/student/list.do"; }
六、内部重定向与转发:
/** * 删除 * * @param student * @return */ @RequestMapping("/delete") public String delete(@RequestParam("id") Integer id) { studentMap.remove(id); //转发 return "redirect:/student/list.do"; //重定向 // return "redirect:/student/list.do"; }
项目源码:
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"> <!-- 中文编码过滤器 --> <filter> <filter-name>encodingFilter</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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <display-name>SpringMvc02</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 定义spring mvc --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> </servlet> <!-- controller访问后缀 --> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 使用注解的包,包括子集 --> <context:component-scan base-package="com.fx"/> <!-- 视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp"></property> </bean> </beans>
Student.java
package com.fx.model; public class Student { private Integer id; private String name; private Integer age; public Student() { super(); } public Student(Integer id, String name, Integer age) { super(); this.id = id; this.name = name; this.age = age; } 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; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
StudentController.java
package com.fx.controller; import java.util.HashMap; import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import com.fx.model.Student; /** * Controller:定义Controller控制器 RequestMapping:设置请求路径 * * @author fx * */ @Controller @RequestMapping("/student") public class StudentController { private Integer identityId = 3; private static Map<Integer, Student> studentMap = new HashMap<Integer, Student>(); static { studentMap.put(1, new Student(1, "张三", 11)); studentMap.put(2, new Student(2, "李四", 12)); studentMap.put(3, new Student(3, "王五", 13)); } /** * 查询列表 * * @return */ @RequestMapping("/list") public ModelAndView list() { ModelAndView mav = new ModelAndView(); mav.addObject("studentList", studentMap); mav.setViewName("student/list"); return mav; } /** * 跳转修改或新增页面 * * @param id * @return */ @RequestMapping("/preSave") public ModelAndView preSave( @RequestParam(value = "id", required = false) String id) { ModelAndView mav = new ModelAndView(); if (id != null) { mav.addObject("student", studentMap.get(Integer.parseInt(id))); mav.setViewName("student/update"); } else { mav.setViewName("student/add"); } return mav; } /** * 保存,有则修改,没有则 * * @param student * @return */ @RequestMapping("/save") public String save(Student student) { if (student.getId() == null) { // 新增id自动增1 identityId += 1; student.setId(identityId); studentMap.put(student.getId(), student); } else { // 修改则直接覆盖原有数据 studentMap.put(student.getId(), student); } //转发 return "redirect:/student/list.do"; //重定向 // return "redirect:/student/list.do"; } /** * 删除 * * @param student * @return */ @RequestMapping("/delete") public String delete(@RequestParam("id") Integer id) { studentMap.remove(id); //转发 return "redirect:/student/list.do"; //重定向 // return "redirect:/student/list.do"; } }
list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <a href="${pageContext.request.contextPath}/student/preSave.do">添加学生</a> <table> <tr> <th>编号</th> <th>姓名</th> <th>年龄</th> <th>操作</th> </tr> <c:forEach var="student" items="${studentList }"> <tr> <td>${student.value.id }</td> <td>${student.value.name }</td> <td>${student.value.age }</td> <td> <a href="${pageContext.request.contextPath}/student/preSave.do?id=${student.value.id}">修改</a> <a href="${pageContext.request.contextPath}/student/delete.do?id=${student.value.id}">删除</a> </td> </tr> </c:forEach> </table> </body> </html>
add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="save.do" method="post"> <table> <tr> <th colspan="2">学生添加</th> </tr> <tr> <td>姓名</td> <td><input type="text" name="name"/></td> </tr> <tr> <td>年龄</td> <td><input type="text" name="age"/></td> </tr> <tr> <td colspan="2"> <input type="submit" value="提交"/> </td> </tr> </table> </form> </body> </html>
update.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="save.do" method="post"> <table> <tr> <th colspan="2">学生修改</th> </tr> <tr> <td>姓名</td> <td><input type="text" name="name" value="${student.name }"/></td> </tr> <tr> <td>年龄</td> <td><input type="text" name="age" value="${student.age }"/></td> </tr> <tr> <td colspan="2"> <input type="hidden" name="id" value="${student.id }"/> <input type="submit" value="提交"/> </td> </tr> </table> </form> </body> </html>
访问路径:
http://localhost:8080/SpringMvc02/student/list.do
- SpringMvc02.zip (7.8 MB)
- 下载次数: 0
发表评论
-
第五章 Spring MVC 文件上传
2017-08-23 11:31 481spring mvc 文件上传: 1、配置 spring- ... -
第四章 Spring MVC Rest风格的url、静态资源标签
2017-08-23 10:21 1119一、Restful 风格的资源 U ... -
第三章 Spring MVC Servlet API与Json的支持
2017-08-22 23:06 452Spring MVC 对 Servlet API 的支持: ... -
第一章 Spring MVC 你好spring mvc
2017-08-22 14:34 413Spring MVC属于SpringFrameWork的后续产 ...
相关推荐
《Java EE企业级应用开发教程》第二版,结合Spring、Spring MVC和MyBatis三大框架,为读者提供了全面深入的Java后端开发学习路径。这本书的源码资源旨在帮助开发者通过实践来理解并掌握企业级应用开发的核心技术。 ...
《Java EE企业级应用开发教程(Spring Spring MVC MyBatis)》是一本专注于Java企业级应用开发的专业教程,由黑马程序员编著。本书的核心在于深入浅出地介绍如何使用Java EE技术栈,特别是Spring、Spring MVC和...
### Spring MVC:逐步掌握 #### 一、Spring MVC框架概览与环境搭建 Spring MVC是Spring框架中的一个模块,主要用于构建Web应用。它基于MVC(Model-View-Controller)设计模式,使得开发者能够清晰地分离业务逻辑、...
绝对是spring攻略中文版第二版 Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 第一部分 核心概念 第1章 控制反转和容器 1.1 使用容器管理组件 1.1.1 问题描述 1.1.2 ...
绝对是spring攻略中文版第二版 Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 第一部分 核心概念 第1章 控制反转和容器 1.1 使用容器管理组件 1.1.1 问题描述 1.1.2 ...
### 案例8:Spring整合Spring MVC与Hibernate + EasyUI实现电子商城后台订单管理 #### 一、项目概述 本案例旨在通过Spring框架整合Spring MVC与Hibernate技术,结合前端库EasyUI,实现一个电子商城后台订单管理...
第二部分 基础主题 第7章 Spring对JDBC的支持 第8章 Spring中的事务管理 第9章 Spring对ORM的支持 第10章 Spring MVC框架 第11章 整合Spring与其他Web框架 第12章 Spring对测试的支持...
《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》是一本深入讲解企业级应用开发的教程,其配套源码资料是学习Java EE技术栈的重要辅助材料。这套教程聚焦于SSM框架,即Spring、Spring MVC和MyBatis的...
《Java EE企业级应用开发教程(Spring Spring MVC MyBatis)》是一本专注于Java后端开发的实战型教材,特别适合于对Java EE感兴趣并希望深入学习的企业级开发者。本书结合了Spring框架、Spring MVC以及MyBatis这三大...
第二篇 俯视Spring MVC 第8章 Spring MVC之初体验84 8.1 环境搭建84 8.2 Spring MVC最简单的配置84 8.2.1 在web.xml中配置Servlet85 8.2.2 创建Spring MVC的xml配置文件85 8.2.3 创建Controller和view86 8.3...
在本压缩包“spring4.x第二章代码”中,我们主要关注的是Spring框架的第二章内容,这通常涉及到Spring的核心概念和技术。Spring是Java企业级应用开发中的一个关键框架,它提供了一个全面的编程和配置模型,以简化...
【标题】"springlive-第二章代码"是一个与Spring框架相关的Eclipse项目,它涵盖了Spring框架的第二章学习内容。这个项目可能包含了用于演示和练习Spring核心概念的源代码,如依赖注入、AOP(面向切面编程)以及Bean...
2. **第二章:搭建Spring环境** - 安装与配置:介绍如何配置Java开发环境,包括JDK、IDE和构建工具如Maven或Gradle。 - 创建第一个Spring项目:逐步指导创建一个简单的Spring项目,体验Spring的基本配置。 3. **...
Spring源码深度解析第二版 Spring是一款广泛应用于Java企业级应用程序的开源框架,旨在简化Java应用程序的开发和部署。Spring框架的核心主要包括了IoC容器、AOP、MVC框架等模块。 第1章 Spring整体架构和环境搭建 ...
在本章"Spring AOP 基础1"中,我们主要探讨了Spring AOP(面向切面编程)的核心概念和实现方式。AOP是一种编程范式,它允许程序员定义"切面",这些切面封装了跨越多个对象的横切关注点,如日志、事务管理等。以下是...
第二章:Spring Bean与依赖注入 这一章深入讲解了Spring中的Bean以及如何通过XML或注解实现依赖注入。Bean是Spring中的核心概念,代表着应用中的一个实例化对象。依赖注入允许我们解耦组件,使得系统更加灵活和可...
《Spring.Net框架实战:第二章示例代码解析》 在深入学习任何技术框架时,实践总是最好的老师。Spring.Net作为一款强大的.NET平台上的轻量级应用程序框架,它提供了丰富的依赖注入(Dependency Injection,DI)和...
第二部分 点睛Spring MVC 4.x 第4 章 Spring MVC 基础 72 4.1 Spring MVC 概述 73 4.2 Spring MVC 项目快速搭建 74 4.2.1 点睛 74 4.2.2 示例 74 4.3 Spring MVC 的常用注解 82 4.3.1 点睛 82 4.3.2 示例 83 4.4 ...