博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC的Controller
阅读量:6441 次
发布时间:2019-06-23

本文共 2394 字,大约阅读时间需要 7 分钟。

(一)编写控制器。

 

注:如果WEB-INF下存在index.jsp,”/”将会优先访问index.jsp,所以需要将index.jsp删除或重命名。

对应的home.jsp

 

游览器访问:

 

(二)向视图传递模型

web应用中,我们常需要把数据渲染到视图中,下面就看看如何用SpringMVC实现查询用户列表的功能。

1.首先定义一个用户bean

 

2.定义一个获取用户列表的service,这里我直接创建一个List

 

3.控制器的编写。

在新的方法里,新加入了一个Model形参(其实就是Map,甚至可以把Model换成Map),这样,users就可以将产生的信息传递到视图。

 

值得一提的是,在向Model添加数据时,如果不写key,模型的Key将会根据类型推断出(本例中,List<User>就是userList)。

不仅如此,我们甚至可以不使用Model,就像下面这样

 

因为没有指定请求路径,默认会是方法名“/allUser”。当处理器方法返回对象或集合时,这个值会放到模型中,模型的key会根据类型推断得出。而视图的名称会根据请求的路径推断得出“allUser”。

4.最后是视图的渲染

视图使用了EL表达式和jstl,如果是Servlet3.0话,EL默认是关闭的,需要加上<%@ page isELIgnored="false" %>来开启。

 

5.测试

 

三、对请求的处理

Web中,客户端可以通过表单、url等方式,向服务端提交数据或查询数据。那么SpringMVC是如何对请求数据进行接受的呢?

(一)请求处理

SpringMVC中,对于表单数据、Url参数都可以通过@RequestParam(“name”)进行接收。在下例中,需要在查询用户时进行分页,这时就需要传递两个参数:

max 从第几个用户开始

count 一次需要查询的用户数

 

对于这个两个值为空的情况,还需要设置一个默认的值。

 

 

(二)路径占位符

SpringMVC提供了路径占位符的功能,这样就可以使Url变Restful

 

这样,当我们Url为“users/13”时,SpringMVC就会自动截取13并赋值给userId

对了,如果方法的参数名与占位符的名称一致的话,我们还可以去掉@PathVariableValue属性,就像下面这样。

四、对表单的处理

(一)表单数据处理

在上面的基础上,我们添加一个注册功能,以此来说明SpringMvc对表单的处理。

  1. Controller中添加访问注册页面的方法

 

  2.创建一个注册页面register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    用户注册    

用户注册

用户名:
密码:
View Code

这里的form标签没有设置action属性。在这种情况下,表单会提交到与展现这个页面相同的URL路径上,如本例的“/register”上。

  3.Controller添加接受表单数据的方法

 

 

此处有3点需要注意。

(1)因为表单提交为Post,所以需要在对应的controller也要设置接受post请求。

(2)我们在方法中放了一个User对象,这个对象有idnamepassword等属性,这些属性会被请求中同名的参数填充。

(3)当在返回的值前添加redirect”前缀时,InternalResourceViewResolver视图解析器会将值解析成重定向规则,而不是视图的名称。

(二)校验表单

如果用户在提交表单时忘记填写name或者password,我们目前的程序依然会正常执行,这显然是不合理的,

Spring3.0开始,SpringMVC提供了对Java校验API的支持,我们可以根据注解方便的进行表单校验。

下表列出了这些注解:

@AssertFalse

所注解的元素必须为Boolean类型,并且为false

@AssertTrue

所注解的元素必须为Boolean类型,并且为true

@DecimalMax

所注解的元素必须为数字,并且值要小于等于给定的BigDecimalString

@DecimalMin

所注解的元素必须为数字,并且值要大于等于给定的BigDecimalString

@Digits

所注解的元素必须为数字,并且值必须为指定位数

@Future

所注解的元素必须为一个将来的日期

@Max

所注解的元素必须为数字,并且值要小于等于给定的

@Min

所注解的元素必须为数字,并且值要大于等于给定的

@NotNull

所注解的元素必须不为null

@Null

所注解的元素必须为null

@Past

所注解的元素必须为一个过去的日期

@Pattern

所注解的元素必须匹配给定的正则表达式

@Size

所注解的元素必须为String、集合或数组,且长度要符合给定的范围

下面我们就把这些规则应用到我们的User实体中

首先,需要添加Java校验APi的依赖

javax.validation
validation-api
1.1.0.Final

然后在需要验证的实体类添加对应的校验注解:

 

 

我们需要在Controller方法启用校验功能它才会生效,如下所示

 

 

转载于:https://www.cnblogs.com/chenkeyu/p/7718250.html

你可能感兴趣的文章
惠普再“卖身”,软件业务卖给了这家鼻祖级公司
查看>>
软件定义存储的定制化怎么走?
查看>>
“上升”华为碰撞“下降”联想
查看>>
如何基于Spark进行用户画像?
查看>>
光伏发电对系统冲击大 “十三五”电力规划重点增强调峰能力
查看>>
全球19家值得关注的物联网安全初创企业
查看>>
Android下的junit 单元测试
查看>>
这几个在搞低功耗广域网的,才是物联网的黑马
查看>>
主流or消亡?2016年大数据发展将何去何从
查看>>
《大数据分析原理与实践》一一第3章 关联分析模型
查看>>
《挖掘管理价值:企业软件项目管理实战》一2.4 软件设计过程
查看>>
Capybara 2.14.1 发布,Web 应用验收测试框架
查看>>
ExcelJS —— Node 的 Excel 读写扩展模块2
查看>>
《数字短片创作(修订版)》——第一部分 剧本创作 第1章 数字短片创意技法 剧本创作的构思...
查看>>
MIT 学生挑战新泽西索取挖矿程序源代码的要求
查看>>
实践 | 不同行业WMS选型策略及需要注意的一些问题
查看>>
MaxCompute与OSS非结构化数据读写互通(及图像处理实例)
查看>>
【F3简介】一张图看懂FPGA-F3实例
查看>>
bash环境(变量与bash配置文件)
查看>>
Server Hard drive mode
查看>>