一、概述

利用SpringMVC做一个CRUD(增删改查)符合Rest风格的;

C:Create:创建

R:Retrieve:查询

U:Update:更新

D:Delete:删除

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

添加俩包,支持jstl标签(Java server pages standarded tag library,即JSP标准标签库)

二、效果

员工列表:

员工添加:

员工修改:

员工删除-点击完成删除来到列表页面


增删改查的URL地址;       /资源名/资源标识

/emp/1          GET:查询id为1的员工

/emp/1          PUT:更新id为1的员工

/emp/1          DELETE:删除id为1的员工

/emp             POST:新增员工;

/emps           GET:查询所有员工

三、实现

1.员工列表展示

查询所有员工----员工列表展示:访问index.jsp----直接发送/emps到控制器<jsp:forward page="/emps"></jsp:forward>------控制器查询所有员工------放在请求域中(数据传出)-----转发到list页面展示

2.员工添加:

界面1点击添加链接--控制器加model—返回界面2添加界面点击提交—控制器取model直接传参就能取

在list页面点击“”员工添加“”----控制器(查询出所有的部门信息要展示在页面)----来到添加页面(add.jsp)--------输入员工数据--------点击保存(/emp )------处理器收到员工保存请求(保存员工)--------保存完成以后还是来到列表页面;

spring表单标签:

原来我们全部通过${}取数据

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

使用spring通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显

新标签里的属性:

path:

1)、当做原生的name项

2)、自动回显隐含模型中某个对象对应的这个属性的值

value:内部值

遍历出的对象的属性,但我们不用像之前去写遍历的标签</c:forEach>

itemLabel:  看到的名字

itemValue:内部值

特色:

1)、SpringMVC认为,表单数据中的每一项最终都是要回显的;(即返回界面会自动渲染请求域中的数据)

path指定的是一个属性;这个属性是从隐含模型(model)(请求域中取出的某个对象中的属性);path指定的每一个属性,请求域中保存的对象一定要拥有这个属性;这个对象就是请求域中的command作为key

2)、modelAttribute="":

可以告诉SpringMVC不要去找command的值了,我放了一个modelAttribute指定自定义的值;比如employee找对象用的key就用employee;

model.addAttribute("employee", new Employee());

3.员工修改

流程同上

需求上在修改页面不加员工名字,那么从页面传回控制器的model对象employee的名字字段就为空,所以要在正式更新之前调用一下被@ModelAttribute标注的方法,该方法根据页面中存的隐藏id查一遍employee,返回employee

隐藏属性:<input type="hidden" name="id" value="${employee.id }"/>

@ModelAttribute :被该注解修饰的方法,会在每一次请求时优先执行,用于接收前台jsp页面传入的参数

4.员工删除

与添加、修改不同的是,删除操作只过一边程序:即只走一遍Controller

5.引入jQuery.js出404分析

<!-- 默认前端控制器是拦截所有资源(除过jsp),js文件就404了;要js文件的请求是应该交给tomcat处理的

<!-- 告诉SpringMVC,自己映射的请求就自己处理,不能处理的请求(这里的jquery.js引入)直接交给tomcat -->

加标签:

<!-- 这个标签允许静态资源能访问,但动态映射的请求就不行了(比如/emp这种常写的),有副作用 -->

<mvc:default-servlet-handler/>

再加标签

<!-- springmvc可以保证动态请求和静态请求都能访问 -->

<mvc:annotation-driven></mvc:annotation-driven>

【串线篇】实现一个RestfulCRUD的更多相关文章

  1. 【转】C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。

    C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子. 标签: c#objectnewlineexceptionbytestring 2010-05-17 01:10 117109人阅读 ...

  2. JavaWeb学习总结第二篇--第一个JavaWeb程序

    JavaWeb学习总结第二篇—第一个JavaWeb程序 最近我在学院工作室学习并加入到研究生的项目中,在学长学姐的带领下,进入项目实践中,为该项目实现一个框架(用已有框架进行改写).于是我在这里记录下 ...

  3. Vue.js基础篇实战--一个ToDoList小应用

    距离开始学Vue已经过去一个多月了,总想把学到的东西柔和在一起,做点东西出来,于是有了这个Todolist小应用. 使用vuex 纯粹基础,没有用到web pack,vuex,npm,下次把它改造一下 ...

  4. Hadoop总结篇之三---一个Job到底被提交到哪去了

    我们会定义Job,我们会定义map和reduce程序.那么,这个Job到底是怎么提交的?提交到哪去了?它到底和集群怎么进行交互的呢? 这篇文章将从头讲起. 开发hadoop的程序时,一共有三大块,也就 ...

  5. IOS 中openGL使用教程2(openGL ES 入门篇 | 绘制一个多边形)

    在上一篇我们学习了如何搭建IOS下openGL的开发环境,接下来我们来学习如何绘制一个多边形. 在2.0之前,es的渲染采用的是固定管线,何为固定管线,就是一套固定的模板流程,局部坐标变换 -> ...

  6. iOS开发UI篇—实现一个私人通讯录小应用【转】

    转一篇学习segue不错的教程 一.该部分主要完成内容 1.界面搭建                        2.功能说明 (1).只有当账号和密码输入框都有值的时候,登录按钮才能交互 (2). ...

  7. Golang学习-第二篇 搭建一个简单的Go Web服务器

    序言 由于本人一直从事Web服务器端的程序开发,所以在学习Golang也想从Web这里开始学起,如果对Golang还不太清楚怎么搭建环境的朋友们可以参考我的上一篇文章 Golang的简单介绍及Wind ...

  8. iOS-----openGL--openGL ES iOS 入门篇2--->绘制一个多边形

    在上一篇我们学习了如何搭建IOS下openGL的开发环境,接下来我们来学习如何绘制一个多边形. 在2.0之前,es的渲染采用的是固定管线,何为固定管线,就是一套固定的模板流程,局部坐标变换 -> ...

  9. Win32编程API 基础篇 -- 2.一个简单的窗口 根据英文教程翻译

    一个简单的窗口 例子:简单的窗口 有时人们在IRC提问,”我应该怎样制作一个窗口”...嗯,这恐怕不是完全这么简单好回答!其实这并不难一旦你明白你在做什么,但在你得到一个可展示的窗口之前还有一些事情需 ...

随机推荐

  1. loj6177 「美团 CodeM 初赛 Round B」送外卖2 最短路+状压dp

    题目传送门 https://loj.ac/problem/6177 题解 一直不知道允不允许这样的情况:取了第一的任务的货物后前往配送的时候,顺路取了第二个货物. 然后发现如果不可以这样的话,那么原题 ...

  2. LOJ6435 PKUSC2018 星际穿越

    这个题吧当时在考场只得了45分 然后70分的性质都分析到了 不知道为啥就是写萎蛋了 哎 当时还是too young too simple 看了一下julao们的博客这个题有两种做法 一个是比较费脑子的 ...

  3. 09.事务管理、整合jpa、整合mybatis

    事务管理 spring-boot-starter-jdbc会自动默认注入DataSourceTransactionManager spring-boot-starter-data-jpa会自动默认注入 ...

  4. Halo(六)

    Spring publish-event 机制 监听者模式包含了一个监听者 Listener 与之对应的事件 Event,还有一个事件发布者 EventPublish. 过程就是 EventPubli ...

  5. Delphi Treeview 用法(概念、属性、添加编辑插入节点、定位节点、拖拽等)

    今天再细研究了一下Treeview的用法,网上虽然总结了很多,但是还是有很多节点没有讲到了,也给使用中遇到很多问题.特地总结一下: 1.概念 Treeview用于显示按照树形结构进行组织的数据.Tre ...

  6. 写出高性能SQL语句的十三条法则

    1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记 ...

  7. php rtrim()函数 语法

    php rtrim()函数 语法 rtrim()函数怎么用? php rtrim()函数用于删除字符串右边的空格或其他预定义字符,语法是rtrim(string,charlist),返回经过charl ...

  8. 6 November in 614

    Contest A. greet map,完了. B. gift map,完了. C. [Usaco2008 Nov Gold] 安慰奶牛 最小生成树.新边权设为原边权的两倍,再加上两端点的点权.完了 ...

  9. 2018-2019-2 20175213实验四 《Android开发基础》实验报告

    一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:吕正宏 学号:20175213 指导教师:娄嘉鹏 实验日期:2019年5月14日 实验时间:13:45 - 21:00 实验序号:实验 ...

  10. 基于Java Agent的premain方式实现方法耗时监控(转),为了找到结论执行:premain在jvm启动的时候执行,所有方法前,会执行MyAgent的premain方法

    Java Agent是依附于java应用程序并能对其字节码做相关更改的一项技术,它也是一个Jar包,但并不能独立运行,有点像寄生虫的感觉.当今的许多开源工具尤其是监控和诊断工具,很多都是基于Java ...