之前我们介绍了JDBC和servlet最基本的操作。这次我们需要根据这些基本内容,使用servlet搭建一个前端页面。先来看一下效果:
可以看到,需要搭建一个表格,里面列出我们在数据库中存储的英雄的信息,还有编辑英雄信息和删除单条信息的功能。下面先上代码然后详细解释:
import bean.Hero;
import dao.HeroDAO;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import static java.io.File.separator;
public class ListHeroServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html; charset=UTF-8");
List<Hero> heroes = new HeroDAO().list();
StringBuffer sb = new StringBuffer();
sb.append("<table align='center' border='1' cellspacing='0'>");
sb.append(separator);
sb.append("<tr><td>id</td><td>name</td><td>hp</td><td>damage</td><td>编辑</td><td>删除<td></tr>");
sb.append(separator);
String trFormat = "<tr><td>%d</td><td>%s</td><td>%f</td><td>%d</td>" +
"<td><a href='editHero?id=%d'>edit</a></td>" +
"<td><a href='deleteHero?id=%d'>delete</a></td></tr>";
for (Hero hero: heroes) {
String tr = String.format(trFormat, hero.getId(), hero.getName(), hero.getHp(),
hero.getDamage(), hero.getId(), hero.getId());
sb.append(tr);
}
sb.append("</table>");
response.getWriter().write(sb.toString());
}
}
很好理解的一段代码。主要思想就是建立一个字符串来存储html代码,然后通过 response.getWriter().write()方法,通过servlet显示在浏览器上。
sb.append("<table align='center' border='1' cellspacing='0'>");
这里是调用了css的居中格式。
sb.append(separator);
这里是用separator规避unix和windows换行符的不同。接下来我们需要实现跳转的功能。