配置freemarker,记得加上jar包
<?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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <mvc:annotation-driven/> <context:component-scan base-package="com.sawshaw" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!-- 视图解析器1:html视图解析器 必须先配置freemarkerConfig,注意html是没有prefix前缀属性的 --> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="freemarkerSettings"> <bean class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="properties"> <props> <prop key="default_encoding">utf-8</prop> <prop key="output_encoding">utf-8</prop> </props> </property> </bean> </property> <property name="templateLoaderPath"> <value>/WEB-INF/views/</value> </property> </bean> <bean id="htmlviewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver" p:suffix=".html" p:order="0"> <property name="contentType" value="text/html;charset=UTF-8" /> </bean> <!-- 视图解析器2:jsp视图解析器 --> <bean id="jspviewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/views/" p:suffix=".jsp" p:order="1"> <property name="contentType" value="text/html;charset=UTF-8" /> </bean> <!-- <mvc:resources location="/" mapping="*.html"/> --> <mvc:resources location="/pages/" mapping="/pages/*"/> <mvc:resources location="/img/" mapping="/img/**"/> <mvc:resources location="/css/" mapping="/css/**"/> <mvc:resources location="/js/" mapping="/js/**"/> </beans>
Controller
package com.sawshaw.controller; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.alibaba.fastjson.JSONObject; /** * @author mercy *页面跳转功能 */ @Controller @RequestMapping("/me") public class PageFowardController { @RequestMapping("/greeting") @ResponseBody public String greeting(){ JSONObject js=new JSONObject(); js.put("id", "myId"); js.put("content", "mycontent"); return js.toJSONString(); } //转向web-inf的hello.jsp @RequestMapping("/getHelloUrl") public ModelAndView handleRequest( HttpServletRequest request,HttpServletResponse response){ ModelAndView mav = new ModelAndView("forward:/WEB-INF/views/hello.jsp"); return mav; } //不配置freemarker返回web-infd的hello.jsp,配置了返回 web-inf的hello.html @RequestMapping("/getHelloUrl0") public String handleRequest0( HttpServletRequest request,HttpServletResponse response){ return "hello"; } //转发请求 @RequestMapping("/getHelloUrl1") public void handleRequest1( HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{ request.getRequestDispatcher("getHelloUrl7").forward(request, response); } /** * @param request * 这个方法是重定向webapp下的hello.html * @param response * @return */ @RequestMapping("/getHelloUrl2") public ModelAndView handleRequest2( HttpServletRequest request,HttpServletResponse response){ ModelAndView mv = new ModelAndView("redirect:/hello.html"); return mv; } /** * @param request * 这个方法是重定向webapp下的hello.html * @param response * @return */ @RequestMapping("/getHelloUrl3") public String handleRequest3( HttpServletRequest request,HttpServletResponse response){ return "redirect:/hello.html"; } /** * @param request * 这个方法是重定向webapp下的hello.html * @param response * @return */ @RequestMapping("/getHelloUrl4") public void handleRequest4( HttpServletRequest request,HttpServletResponse response) throws IOException{ response.sendRedirect(request.getContextPath()+"/hello.html"); } //返回webroot的hello.jsp @RequestMapping("/getHelloUrl5") public void handleRequest5( HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{ //失败 //request.getRequestDispatcher("hello.jsp").forward(request, response); //成功 response.sendRedirect(request.getContextPath()+"/hello.jsp"); } //配置freemarker后返回web-inf的hello.html,有同名的html和jsp优先返回html @RequestMapping("/getHelloUrl6") public ModelAndView handleRequest6( HttpServletRequest request,HttpServletResponse response){ ModelAndView mav = new ModelAndView("hello"); return mav; } //返回web-inf的nihao.jsp @RequestMapping("/getHelloUrl7") public ModelAndView handleRequest7( HttpServletRequest request,HttpServletResponse response){ ModelAndView mav = new ModelAndView("nihao"); return mav; } @RequestMapping("/postData") @ResponseBody public String postData(HttpServletRequest request,HttpServletResponse response){ String userName=request.getParameter("userName"); System.out.println("userName:"+userName); return userName; } }
项目结构: