通过freemarker与servlet整合,实现一个学生信息列表web页面。
项目初始化
- 初始化一个DynamicWebProject
- 引入freemarker.jar包
将freemarker.jar放在javaweb工程的src/main/webapp/WEB-INF/lib下。 - 在/WEB-INF目录下新建一个ftl文件夹。
- 将静态Demo页面相关文件复制到本工程下:
- 原静态Demo文件夹结构如下:
- Demo
- css
- js
- fonts
- student.html
- Demo
- 将css、js、fonts文件复制到webapp下,将student.html改为student.ftl后复制到ftl文件夹下。
- 配置web.xml文件
freemarker.jar中提供了FreemarkerServlet,因此要使用FreemarkerServlet,只需在web.xml进行配置即可,如下:
<servlet>
<servlet-name>freemarker</servlet-name>
<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
<init-param>
<param-name>TemplatePath</param-name>
<param-value>/WEB-INF/ftl</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping>
创建Student类
略
创建StudentListServlet类
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Student> stdList=new ArrayList<Student>();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
stdList.add(new Student("D20061746","张磊磊",LocalDate.parse("1999/10/01", formatter), "电气工程及其自动化", 567));
stdList.add(new Student("D20061747","王明霞",LocalDate.parse("2001/10/01", formatter), "电气工程及其自动化", 543));
stdList.add(new Student("D20061748","赵彦波",LocalDate.parse("1998/10/01", formatter), "电气工程及其自动化", 462));
stdList.add(new Student("D20061749","吕明初",LocalDate.parse("2000/10/01", formatter), "电气工程及其自动化", 627));
stdList.add(new Student("D20061750","姚云平",LocalDate.parse("1997/10/01", formatter), "电气工程及其自动化", 589));
request.setAttribute("stdList", stdList);
request.getRequestDispatcher("/student.ftl").forward(request, response);
}
实现student.ftl
<#list stdList as std>
<tr>
<td>${std_index+1 }</td>
<td>${std.number }</td>
<td>${std.name }</td>
<td>${std.birthday}</td>
<td>${std.major}</td>
<td style="color: red; font-weight: bold">${std.score}</td>
</tr>
</#list>