这是我第一次写博客,我写博客的原因主要是,在遇到的问题解决之后,记录下来,以防以后要用到,所以文笔比较粗俗,供大家借鉴
1.在这里,我用的是idea 工具,创建maven的工程(这个在这里不再叙述)
2.我用的是spring 早期的版本,所以是没有用到最新版本的注解,是直接在spring.xml中配置,废话少说直接开始
第一步:创建好工程,通过maven下载好依赖的spring jia包,并在web.xml中配置,截图如下:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>dispactherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/dispatcherServlet-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- 拦截所有以do结尾的请求 --> <servlet-mapping> <servlet-name>dispactherServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
第二步:在resource目录下,建立spring/dispatcherServlet-servlet.xml,xml中的头部就省略了
<!-- 定义映射 --> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="helloWorld.do">helloWorldAction</prop> </props> </property> </bean>
<!-- 定义控制器 --> <bean id="helloWorldAction" class="com.gc.action.HelloWorldAction"> </bean><!-- 定义视图及jsp存放的路径 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"> <value>org.springframework.web.servlet.view.JstlView</value> </property> <!-- JSP存放的目录 --> <property name="prefix"> <value>/WEB-INF/jsp/</value> </property> <!-- JSP文件的后缀 --> <property name="suffix"> <value>.jsp</value> </property> </bean>
第三部:在main/java 下建立package com.gc.action 和HelloWorldAction控制器
public class HelloWorldAction implements Controller { //实现Controller接口中的handleRequest()方法 默认跳转到hello.jsp public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {return new ModelAndView("hello"); } }
第四步:在WEB-INF目录下创建jsp文件夹,以及hello.jsp文件,在hello.jsp中新建一个文本框<input type="text" name="username" />
此时启动tomcat,就可以访问http://localhost:8080/xxxproject/helloworld.do,即可跳转到hello.jsp
第五步:在resource目录下,再新建一个文件夹message_info,在其目录下,建两个properties文件,
一个为messages_en_US.properties,内容设为:username=usernameForEnglish
一个设为messages_zh_CN.properties,内容设为username=用户名
第六步:在dispatcherServlet-servlet.xml中再加上:
<!-- 定义国际化消息 --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <value>message_info.messages</value> </list> </property> <property name="defaultEncoding" value="UTF-8"/> </bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"> <property name="defaultLocale" value="zh_CN"/> </bean>
第七步:在hello.jsp中,加上spring标签:或者用jstl中的fmt标签,都是一样的
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <html> <head> <title><spring:message code="title" /></title> </head> <body> <spring:message code="username" /> </body> </html>
最后在启动工程,访问http://localhost:8080/xxxproject/helloworld.do,即会hello.jsp中就会出现 "用户名"了,你可以将defaultLocale 切换成 “ en_US” 重新启动即可变成 username("idea貌似改变以下,就得重新启动")
当然,如果没有成,或者出现以下问题:1.中文编程乱码:在setting中,File Encodings,目录修改如下:2.出现类似情况的,???username???
千万别直接访问jsp,因为必须要经过spring的dispacther,才能生效