- 浏览: 25874 次
- 性别:
- 来自: 长沙
文章分类
最新评论
本章是个小示例,使用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 479spring mvc 文件上传: 1、配置 spring- ... -
第四章 Spring MVC Rest风格的url、静态资源标签
2017-08-23 10:21 1115一、Restful 风格的资源 U ... -
第三章 Spring MVC Servlet API与Json的支持
2017-08-22 23:06 448Spring MVC 对 Servlet API 的支持: ... -
第一章 Spring MVC 你好spring mvc
2017-08-22 14:34 411Spring MVC属于SpringFrameWork的后续产 ...
相关推荐
《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)和...
第二章深入讲解了依赖注入(Dependency Injection, DI),这是Spring框架实现IoC的一种方式。依赖注入可以简化对象之间的依赖关系管理,并提高代码的灵活性和可维护性。Spring支持三种主要的依赖注入方式:构造器...