Spring学习笔记之渲染Web视图
来源:互联网 发布:ucloud云计算招聘 编辑:程序博客网 时间:2024/05/20 19:49
视图解析
上一篇文章我们讲到在配置Spring MVC时,需要配置一个ViewResolver来解析视图。
Spring MVC定义了一个名为ViewResolver的接口:
public interface ViewResolver { View resolveViewName(String viewName, Locale locale) throws Exception;}
当给resolveViewName()方法传入一个视图名和Local对象是,它会返回一个View实例,View是另一个接口:
public interface View { ... String getContentType(); void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception;}
View接口的任务就是接受模型以及Servlet的request和response对象,并将输出渲染到response中。
所以,只要我们编写了ViewResolver和View的实现,将要渲染的内容放到response中,进而展现到用户的浏览器中就可以了。而Spring MVC也为我们提供了13个实现——视图解析器,足够我们应付大部分的场景,而不用我们自己去实现。以下是Spring MVC提供的13种视图解析器:
创建JSP视图
开发中我们最常用的就是JSP了,它对应的视图解析器是InternalResourceViewResolver。它会将视图名解析为InternalResourceView实例,如果我们在JSP页面中使用了JSTL(JSP标准标签库)的话,InternalResourceViewResolver能够将视图解析为JstlView形式的JSP文件。通过JstlView,JSTL能够获得Locale对象以及Spring中配置的信息资源,这样做有什么好处呢,好处就是JSTL能够以恰当的方式格式化地域相关的值,如日期和货币。而要想让InternalResourceViewResolver将视图解析为JstlView,我们只需要设置他的viewClass属性即可:
@Bean public ViewResolver viewResolver(){ InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/view/"); resolver.setSuffix(".jsp"); resolver.setViewClass(org.springframework.web.servlet.view.JstlView.class);//将视图解析为JstlView resolver.setExposeContextBeansAsAttributes(true); return resolver; }
下面我们介绍spring为JSP提供的表单标签库,个人觉得这是一个很有用的标签库。
Spring表单绑定标签库
我们知道JSP可以自己添加标签库,Spring为JSP提供了两个标签库,一个标签库会用来渲染HTML表单标签,这些标签可以绑定model中的某个属性。另外一个标签库包含了一些工具类标签,我们可以随时便利地使用它们。
Spring表单绑定标签库的声明:
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf" %>
它提供了14个标签:
下面是一个示例,我们来看它是怎么用的。
在后台我们还需要用到上一篇文章提到的Java校验API(又称JSR-303)的功能,这里用这个规范的一个标准实现——Hibernate Validator。关于JSR-303和Hibernate Validator请参考这篇文章:https://www.ibm.com/developerworks/cn/java/j-lo-jsr303/。从maven将其引入:
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.4.0.Final</version> </dependency>
我们的后台control以及entity类:
@Controllerpublic class Spittler { /** * 进入注册页面 * @return */ @RequestMapping(value="/",method=org.springframework.web.bind.annotation.RequestMethod.GET) public String getRegisterForm(Model model){ model.addAttribute("user", new User()); return "register"; } /** * 注册 * @param user * @param errors * @param model * @return */ @RequestMapping("/register") public String spittle( @Valid User user,//校验输入 Errors errors, Model model){ model.addAttribute("user", user); if(errors.hasErrors()){ return "register";//如果校验出现错误,则重新返回表单。 } return "redirect:/spitter/";//校验成功,重定向到其他Control继续执行 }}
public class User { @NotNull //@Size(min=5,max=16) private String username; //非空,5-16个字符 @NotNull //@Size(min=6, max=10) private String password;//非空,6-10个字符 @NotNull private String email;//非空 public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}
截图:
- Spring学习笔记之渲染Web视图
- spring(6) 渲染web视图
- Spring学习笔记-C6-渲染Web试图
- Spring In Action 05 ---渲染Web视图
- Spring实战-读书笔记(六)-渲染Web视图
- Spring Boot学习(四)之web开发渲染页面 -- Thymeleaf
- Spring Boot学习(四)之web开发渲染页面 -- Freemarker
- Spring Boot学习(四)之web开发渲染页面 -- Velocity
- [学习笔记]web视图
- Spring学习笔记之Spring Web Flow
- 《Spring实战》学习笔记-第六章:web视图解析
- 《Spring实战》学习笔记-第六章:web视图解析
- 《Spring实战》学习笔记-第六章:web视图解析
- 小程序学习之视图与渲染
- 渲染web视图
- Spring boot 使用Thymeleaf对web视图进行渲染
- 第6章 渲染Web视图 笔记1
- 第6章 渲染Web视图---Apache Tiles 笔记2
- jQuery
- Maven项目Java Resoures资源文件夹出现小红叉解决方案
- 安装MySQLdb
- 16蓝桥杯算法训练—区间k大数查询
- MySql Left join on 与 where比较
- Spring学习笔记之渲染Web视图
- 前端初学者(随手记)——创建对象的两种方法
- django基础
- jQuery
- Hibernate中使用Criteria查询及注解——(Emp.hbm.xml)
- 16蓝桥杯算法训练—最大最小公倍数
- jQuery Callback 函数
- PTA 家谱处理
- L1-028. 判断素数