栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在JSP MVC设计中,是否可以在页面加载时自动调用Command?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在JSP MVC设计中,是否可以在页面加载时自动调用Command?

你不知道 您要做的就是调用控制器,并将其转发给JSP。您永远不会直接调用JSP。

因此,最终得到的是:

request --- invokes ---> Controller --- forwards to ---> JSP

Controller可以获取所有必需的内容,并在调用JSP呈现所有请求之前适当地填充请求。

附录-

这是一个简单的Servlet,映射到/ MyServlet:

public class MyServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        MemberDAO dao = DAOFactory.getMemberDAO();        List<Member> members = dao.getMembers();        request.setAttribute("members", members);        RequestDispatcher rd = getServletContext().getRequestDispatcher("/WEB-INF/jsp/members.jsp");        rd.forward(request, response);    }}

这是放置在/WEB-INF/jsp/members.jsp中的关联JSP:

<%@page contentType="text/html" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"    "http://www.w3.org/TR/html4/loose.dtd"><html>    <head>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        <title>Members List</title>    </head>    <body>        <h1>Members List</h1>        <table> <tr>     <td>Member ID</td>     <td>First Name</td>     <td>Last Name</td> </tr> <c:forEach items="${members}" var="member">     <tr>         <td>${member.id}</td>         <td>${member.firstName}</td>         <td>${member.lastName}</td>     </tr> </c:forEach>        </table>    </body></html>

在浏览器中,您单击:http:// yourhost / yourapp /
MyServlet

充当控制器的Servlet接受请求,然后对请求执行操作(在这种情况下,使用简单的DAO模式从数据库中获取所有成员的列表),然后将结果放入带有标签“成员”(这样

request.setAttribute("members",members)
做)。

一种是使用有趣的信息正确填充请求,然后将servlet转发到JSP。

请注意,在这种情况下,JSP位于WEB-INF目录下面。根本无法从浏览器访问位于WEB-
INF内的JSP。因此,对http://yourhost/yourapp/WEB-
INF/jsp/members.jsp的请求将完全失败。

但是它们内部可以访问。

因此,Servlet将转发到members.jsp,然后进行members.jsp渲染,

members
从请求中定位值(JSTL
c:forEach标记中的$ {members}),然后c:forEach遍历该列表,填充
member
变量,然后从那里填写表格中的行。

这是一种经典的“控制器优先”模式,它使JSP不受干扰。它还有助于确保JSP仅位于MVC的View层中。在这个简单的示例中,成员和列表是模型,控制器中的Servlet,而JSP是视图。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484102.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号