我想在我的JSP页面工作中应用MVC2 J2EE方法.我想在JSP中分离Servlet中的代码和设计.我面临的问题是我想在JSP页面中显示所有用户及其数据从DB表到HTML表现在我应该如何从JSP页面调用servlet,因为显示页面中没有表单我不知道是否可以使用调度程序,因为管理员将单击<a href>display users
,JSP页面应显示所有uesrs.我该怎么做?
只需使用doGet()
Servlet 的方法并调用servlet的URL即可.
例如
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<User> users = userDAO.list();
request.setAttribute("users", users);
request.getRequestDispatcher("/WEB-INF/users.jsp").forward(request, response);
}
Run Code Online (Sandbox Code Playgroud)
将此servlet映射web.xml
如下:
<servlet>
<servlet-name>users</servlet-name>
<servlet-class>com.example.UsersServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>users</servlet-name>
<url-pattern>/users</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
现在可以通过http://example.com/context/users访问servlet了.
在/WEB-INF/users.jsp
文件中使用JSTL c:forEach
在表中显示用户.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
<table>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.name}</td>
<td>${user.email}</td>
<td>${user.age}</td>
</tr>
</c:forEach>
</table>
Run Code Online (Sandbox Code Playgroud)
JSP文件将放在/WEB-INF
文件夹中,以避免在不先调用servlet的情况下访问它.
更新:要安装JSTL,请执行以下步骤:
/WEB-INF/lib
文件夹中.不要提取它!别改变web.xml
!一些糟糕的在线教程会建议这样做.他们都错了.根据JSTL TLD文档,在JSP页面顶部声明感兴趣的taglib .例如,JSTL核心:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
4267 次 |
最近记录: |