springMVC+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。

 

定义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的表达式语言来访问并显示。

使用这些宏,必须设置FreeMarkerViewResolverexposeSpringMacroHelpers属性为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>
 

 

即可输入studentlist 内容,注意如果数据库为空没有加?if_exits是不行的,

 

如果提交表单中有日期格式的话要做自己的属性编辑器

注解方法如下:

 

@InitBinder
public void initBinder(WebDataBinder binder, WebRequest request) {
 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
 dateFormat.setLenient(false);
 binder.registerCustomEditor(Date.class,
 new CustomDateEditor(dateFormat, false));//注册个人编辑器。
 // binder.registerCustomEditor(String.class, new StringTrimmerEditor(false));
 }
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值