spring mvc + freemarker

springMVC整合大家都比较熟悉了吧主要有以下几个步骤:

在web.xml配置

<listener> 

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

 </listener> 

//上面的listener主要是启动spring容器

 <servlet> 

<servlet-name>spring</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>spring</servlet-name>

<url-pattern>*.do</url-pattern>

 </servlet-mapping>

//上面是定义一个servlet,DispatcherServlet主要是启动mvc框架的。也就是以do结尾的请求都转发到这个dispatchServlet然后由他转发到相应的controller。

<!--
 springMVC的servlet,它将加载WEN
-
INF
/
spring
-
servlet.xml的配置文件,启动springMVC模块 
-->

定义spring—servlet.xml(上面的DispatcherServlet名+servlet.xml)

       <!--注解说明-->

     <context:annotation-config />

<!--把标记了@Controller注解的类转换为bean-->

<context:component-scanbase-package="com.Springmvc.control"/>

<!--启动SpringMVC的注解功能,完成请求和注解POJO的映射请求映射-->

<beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

<!--freemarker的配置-->

<beanid="freemarkerConfig"

class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

<propertyname="templateLoaderPath"value="/WEB-INF/view/"/>

<propertyname="defaultEncoding"value="utf-8"/>

<propertyname="freemarkerSettings">

<props>

<propkey="template_update_delay">10</prop>

<propkey="locale">zh_CN</prop>

<propkey="datetime_format">yyyy-MM-dd</prop>

<propkey="date_format">yyyy-MM-dd</prop>

<propkey="number_format">#.##</prop>

</props>

</property>

</bean>

<!--FreeMarker视图解析如返回student。。在这里配置后缀名ftl和视图解析器。。-->

<beanid="viewResolver"

class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">

<propertyname="viewClass"value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"></property>

<propertyname="suffix"value=".ftl"/>

<propertyname="contentType"value="text/html;charset=utf-8"/>

<propertyname="exposeRequestAttributes"value="true"/>

<propertyname="exposeSessionAttributes"value="true"/>

<propertyname="exposeSpringMacroHelpers"value="true"/>

</bean>

 exposeRequestAttributes exposeSessionAttributes两个属性都被设置为true。结果是请求和会话属性都被复制到模板的属性集中,可以使用FreeMarker的表达式语言来访问并显示。

使用这些宏,必须设置FreeMarkerViewResolver的exposeSpringMacroHelpers属性为true:

然后controller的的内容如下:

@Controller

@RequestMapping("addStudent.do")

public class StudentControl {

 @Autowired private StudentService studentService;

 @RequestMapping(params = "method=add") public String addStudent(HttpServletRequestrequest,ModelMap model,Student student) throws IOException,TemplateException {

  studentService.addStudent(student);

List<Student>list=studentService.findStudentAll();

model.addAttribute("studentlist",list);//request保存这个对象

return"student";

 }

在controller中保持了studentlist(存储在request中)

在freemarker中

<table>

<tr><td>index</td><td>username</td><td>password</td><td>id</td></tr>

<#liststudentlistasstudent>

<tr><td>${student_index}</td><td>${student.user?if_exists}</td><td>${student.psw?if_exists}</td><td>${student.id?if_exists}</td</tr>

</#list>

     </table>
  1. <!-- 1:对web包中指定包中所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->  
  2.     <context:component-scan base-package="com.zhang.controller.anno" />  
  3.   
  4.     <!-- 2:启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->  
  5.     <bean  
  6.         class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />  
  7.   
  8.     <!-- Spirng 默认启动三个apapter 如果自定义了一个会忽略其他的,当 beanNameUrlMapping 与annotation同时存在时要显示声明   
  9.         所有 即:当注解形式与声明形式同时开发时需要执行一下三行 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"   
  10.         /> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"   
  11.         /> <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"   
  12.         /> -->

相关推荐