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-scan base-package="com.Springmvc.control" /> 
  <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射   请求映射--> 
      <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />  
     
 
 <!-- freemarker的配置 -->
 <bean id="freemarkerConfig"
  class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
  <property name="templateLoaderPath" value="/WEB-INF/view/" />
  <property name="defaultEncoding" value="utf-8" />
  <property name="freemarkerSettings">
   <props>
    <prop key="template_update_delay">10</prop>
    <prop key="locale">zh_CN</prop>
    <prop key="datetime_format">yyyy-MM-dd</prop>
    <prop key="date_format">yyyy-MM-dd</prop>
    <prop key="number_format">#.##</prop>
   </props>
  </property>
 </bean>
 <!-- FreeMarker视图解析   如返回student。。在这里配置后缀名ftl和视图解析器。。-->
 <bean id="viewResolver"
  class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
  
  <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"></property>
  
  <property name="suffix" value=".ftl" />
  <property name="contentType" value="text/html;charset=utf-8" />
  <property name="exposeRequestAttributes" value="true" />
  <property name="exposeSessionAttributes" value="true" />
  <property name="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(HttpServletRequest request,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>
      <#list studentlist as student> 
       <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.         />  -- >