概述
1、配置适用于JSP的视图解析器
java配置例子:
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver resolver =
new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
XML配置例子:
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/views/"
p:suffix=".jsp" />
解析JSTL视图(将逻辑视图解析为JstlView)java配置例子:
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver resolver =
new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.setViewClass(
org.springframework.web.servlet.view.JstlView.class);
return resolver;
}
XML配置例子:
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/views/"
p:suffix=".jsp"
p:viewClass="org.springframework.web.servlet.view.JstlView" />
2、使用Spring的JSP库
2.1、Spring表单绑定标签库(将模型与表单绑定)
使用表单绑定库,需要在JSP页面中进行声明:
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf" %>
Spring表单绑定标签库中所包含的标签:
在注册JSP中使用标签的例子:
<sf:form method="POST" commandName="spitter">
First Name: <sf:input path="firstName" /><br/>
Last Name: <sf:input path="lastName" /><br/>
Email: <sf:input path="email" /><br/>
Username: <sf:input path="username" /><br/>
Password: <sf:password path="password" /><br/>
<input type="submit" value="Register" />
</sf:form>
通过commandName属性构建针对某个模型对象的上下文信息,其他表单绑定标签中,会引用这个模型对象的属性。<input>标签的value属性值将设为模型对象中path属性所对应的值。
<sf:form>标签允许指定type属性,例子:
Email: <sf:input path="email" type="email" /><br/>
相对于标准的HTML标签,Spring表单绑定标签在校验失败后,表单中会预先填充之前输入的值,Spring表单绑定标签将表单与模型绑定在了一起,并最终渲染为HTML。
使用<sf:errors>展现错误的例子:
<sf:form method="POST" commandName="spitter">
First Name: <sf:input path="firstName" />
<sf:errors path="firstName" cssClass="error" /><br/>
...
</sf:form>
span.error{
color:red;
}
将错误在同一个地方进行显示:
<sf:form method="POST" commandName="spitter">
<sf:errors path="*" element="div" cssClass="errors" />
...
</sf:form>
着重显示需要修改的输入域:
<sf:form method="POST" commandName="spitter">
<sf:label path="firstName"
cssErrorClass="error">First Name</sf:label>:
<sf:input path="firstName" cssErrorClass="error" /><br/>
...
</sf:form>
label.error{
color:red;
}
input.error{
background-color: #ffcccc;
}
将错误信息抽取到属性文件:
@NotNull
@Size(min=5, max=16, message="{username.size}")
private String username;
username.size=
Username must be between {min} and {max} characters long.
好处是可以通过创建任意数量的ValidationMessages.properties文件,涵盖想支持的所有语言和地域。
2.2、Spring通用标签库
使用通用标签库需要的声明:
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
通用标签库中的标签:
将硬编码的欢迎信息替换为通过属性文件进行设置的形式:
<h1><s:message code="spitter.welcome" /></h1>
ResourceBundleMessageSource(实现了MessageSource接口)配置信息源:
@Bean
public MessageSource messageSource(){
ResourceBundleMessageSource messageSource =
new ResourceBundleMessageSource();
messageSource.setBasename("messages");
return messageSource;
}
ResourceBundleMessageSource会从属性文件(根类路径下)中加载信息,这个信息文件时根据basename衍生而来的。
ReloadableResourceBundleMessageSource配置信息源:
@Bean
public MessageSource messageSource(){
ReloadableResourceBundleMessageSource messageSource =
new ReloadableResourceBundleMessageSource();
messageSource.setBasename("file:///etc/spittr/messages");
messageSource.setCacheSeconds(10);
return messageSource;
}
这里basename属性可以设置为类路径下(以classpath:作为前缀)、文件系统中(以file:作为前缀)或Web应用路径下(没有前缀)查找属性。
<s:url>基本用法:
<a href="<s:url href="/spitter/register" />">Register</a>
<s:url>会接受一个相对于Servlet上下文的URL,并在渲染的时候预先添上Servlet上下文路径。
创建URL并赋值给一个变量:
<s:url href="/spitter/register" var="registerUrl" />
<a href="${registerUrl}">Register</a>
通过scope属性设置URL作用域:
<s:url href="/spitter/register" var="registerUrl" scope="request" />
在URL上添加参数:
<s:url href="/spittles" var="spittlesUrl">
<s:param name="max" value="60" />
<s:param name="max" vlaue="20" />
</s:url>
创建带有路径参数的URL:
<s:url href="/spitter/{username}" var="spitterUrl">
<s:param name="username" value="jabber" />
</s:url>
URL转义(显示渲染结果但不作为超链接):
<s:url value="/spittles" htmlEscape="true">
<s:param name="max" value="60" />
<s:param name="count" value="20" />
<s:url>
如果要在JavaScript代码中使用URL:
<s:url value="/spittles" var="spittlesJSUrl" javaScriptEscape="true">
<s:param name="max" value="60" />
<s:param name="count" value="20" />
</s:url>
<script>
var spittlesUrl="${spittlesJSUrl}"
</script>
使用<s:excapeBody>标签转义内容(支持HTML以及JavaScript):
<s:escapeBody htmlEscape="true>
<h1>Hello</h1>
</s:escapeBody>
最后
以上就是可耐冬瓜为你收集整理的Spring实战(第四版)读书笔记17——JSP视图的全部内容,希望文章能够帮你解决Spring实战(第四版)读书笔记17——JSP视图所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复