1、语言国际化
①需要另外导入jar包:jstl.jar和standard.jar
②需要到SpringMVC配置文件里面配置国际化资源文件,在显示的页面配置taglib标签和fmt标签
③注意:在显示字的页面配置taglib标签时,属性uri的值为http://java.sun.com/jsp/jstl/fmt
④项目使用jstl后,SpringMVC会把视图由InternalResourceView转为JstlView
2、语言国际化配置步骤
①springmvc配置文件配置国际化资源文件(类名为”org.springframework.context.support.ResourceBundleMessageSource”)
②显示的页面配置taglib标签(uri为”http://java.sun.com/jsp/jstl/fmt“)
③创建国际化语言资源文件
④显示页面使用fmt:message标签设置显示的字对应的key
3、自定义视图
步骤:
①首先需要建立一个实现org.springframework.web.servlet.View接口的类
②在该类中实现org.springframework.web.servlet.View的基本方法
③在render方法中用HttpServletResponse.getWriter().println方法输出需要的内容
④到SpringMVC配置文件中配置视图解析器(类名为”org.springframework.web.servlet.view.BeanNameViewResolver”)
⑤到handler里面写相关的调用方法
注意:
①该调用方法的返回值为自定义视图类首字母小写的类名
②自定义视图类要用@Component修饰
4、重定向
①重定向其实就是handler方法return的时候通过forward:或者redirect:指定重定向到哪个资源文件(即:重定向到指定的jsp文件)
②如果返回字符串中带有forward:或者redirect:,SpringMVC会对其进行特殊处理
③”forward:”,会对目标地址进行转发操作
④”redirect:”,会对目标地址进行重定向操作
⑤重定向是地址跳转,转发是数据发送到指定地址
⑥其实两个都可以达到转发的效果,但是forward会匹配到handler上,然后会导致网址问题,如:这里地址会跳转到localhost/test/testForward而不是localhost/views/result.jsp, 所以一般情况下建议用redirect:
5、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>SpringMVC_6_View</display-name>
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
6、springmvc.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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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-4.3.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">
<!-- 配置自动扫描包 -->
<context:component-scan base-package="com.test.springmvc"></context:component-scan>
<!-- 配置视图解析器,把handler返回值解析为实际视图 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 配置国际化资源文件 -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="i18n"></property>
</bean>
<!-- 配置直接转发的页面 -->
<!--
1、测试mvc:view-controller标签
2、直接根据网址转发页面,不需要通过Handler方法来转发页面
3、实际开发中都需要配置mvc:annotation-driven标签,不然会导致原来通过handler转发页面的逻辑无效而且报404错
4、path:浏览器网址路径
5、view-name:转发目标页面名,相当于handler返回值的
-->
<mvc:view-controller path="/viewController" view-name="result"/>
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 配置视图解析器 -->
<!-- 使用视图名字来解析视图 -->
<!-- 通过order属性定义视图解析器的优先级,order越小优先级越高 -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
<property name="order" value="100"></property>
</bean>
</beans>
7、Handler.java
package com.test.springmvc.handlers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping("/test")
@Controller
public class Handler {
//测试语言国际化
//需要另外导入jar包:jstl.jar和standard.jar
//需要到SpringMVC配置文件里面配置国际化资源文件,在显示的页面配置taglib标签和fmt标签
//注意:在显示页面配置taglib标签时,属性uri的值为http://java.sun.com/jsp/jstl/fmt
//项目使用jstl后,SpringMVC会把视图由InternalResourceView转为JstlView
@RequestMapping("/testMutiLanguage")
public String testMutiLanguage(){
System.out.println("testMutiLanguage");
String result = "result";
return result;
}
//测试自定义视图
//步骤:
//1、首先需要建立一个实现org.springframework.web.servlet.View接口的类
//2、在该类中实现org.springframework.web.servlet.View的基本方法
//3、在render方法中用HttpServletResponse.getWriter().println方法输出需要的内容
//4、到SpringMVC配置文件中配置视图解析器(类名为"org.springframework.web.servlet.view.BeanNameViewResolver")
//5、到handler里面写相关的调用方法
//注意:
//1、该调用方法的返回值为自定义视图类首字母小写的类名
//2、自定义视图类要用@Component修饰
@RequestMapping("/testUserDefineView")
public String testUserDefineView(){
System.out.println("testUserDefineView");
return "userDefineView";
}
//测试重定向
//1、如果返回字符串中带有forward:或者redirect:,SpringMVC会对其进行特殊处理
//2、"forward:",会对目标地址进行转发操作
//3、"redirect:",会对目标地址进行重定向操作
//4、重定向是地址跳转,转发是数据发送到指定地址
//5、其实两个都可以达到转发的效果,但是forward会匹配到handler上,然后会导致网址问题,如:这里地址会跳转到localhost/test/testForward而不是localhost/views/result.jsp
@RequestMapping("/testForward")
public String testForward(){
System.out.println("testForward");
return "forward:/views/result.jsp";
}
@RequestMapping("/testRedirect")
public String testRedirect(){
System.out.println("testRedirect");
return "redirect:/views/result.jsp";
}
}
8、UserDefineView
package com.test.springmvc.view;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.View;
@Component
public class UserDefineView implements View{
@Override
public String getContentType() {
return "text/html";
}
@Override
public void render(Map<String, ?> arg0, HttpServletRequest req, HttpServletResponse resp) throws Exception {
resp.getWriter().println("UserDefineView arg0:"+arg0+",time:"+new Date());
}
}
9、i18n
i18n.name=English name
i18n.desc=English description
10、index.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>
<a href="test/testMutiLanguage">testMutiLanguage</a>
<br><br>
<a href="viewController">viewController</a>
<br><br>
<a href="test/testUserDefineView">testUserDefineView</a>
<br><br>
<a href="test/testForward">testForward</a>
<br><br>
<a href="test/testRedirect">testRedirect</a>
<br><br>
</body>
</html>
11、result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!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>
name : <fmt:message key="i18n.name"></fmt:message><br>
desc : <fmt:message key="i18n.desc"></fmt:message><br>
</body>
</html>
12、项目目录
13、demo
https://download.csdn.net/download/qq_22778717/10599501