当前位置:文档之家› JSP程序设计第11章习题答案

JSP程序设计第11章习题答案

第11章理解MVC习题答案1.简述Web应用中表示层的两种架构模式,并比较这两种模式的优缺点。

答案:Web应用中表示层的两种架构模式分别为:Model1和Model2。

●Model1的工作原理如下:(1)客户端发出请求,该请求由JSP页面接收。

(2)Java Bean用于实现业务模型,JSP根据请求与不同Java Bean进行交互。

(3)业务逻辑操作指定Java Bean并改变其模型状态。

(4)JSP将改变后的结果信息转发给客户端。

● Model2的工作原理如下:(1)Servlet接收客户端发出的请求。

(2)Servlet根据不同的请求调用相应的Java Bean。

(3)业务逻辑操作指定Java Bean并改变其模型状态。

(4)Servlet将改变后Java Bean的业务模型传递给JSP视图。

(5)JSP将后台处理结果呈现给客户端。

这两种模式的优缺点比较如下:● Model1适合快速开发小型应用,但是控制逻辑与表示逻辑耦合紧密。

在大型应用程序开发过程中,容易造成程序的可移植性差,不易维护。

●与Model1模式相比,Model2更适合开发大型应用程序。

在Model2中实现了业务逻辑与表示逻辑的分离,相应地提高了程序的可维护性。

但是在开发一些小型应用时,使用Model2可能会增加程序的复杂程度。

2.说明MVC设计模式中,M、V、C分别代表什么,有什么作用。

答案:M代表Model(模型),该组件是对软件所处理问题逻辑的一种抽象,封装了问题的核心数据,逻辑和功能实现,独立于具体的界面显示以及I/O操作。

V代表View(视图),该组件将表示模型数据,逻辑关系以及状态信息,以某种形式展现给用户。

视图组件从模型组件获得显示信息,并且对于相同的显示信息可以通过不同的显示形式或视图展现给用户。

C代表Controller(控制器),该组件主要负责用户与软件之间的交互操作,控制模型状态变化的传播,以确保用户界面与模型状态的统一。

3.简述MVC的三种架构模式及其工作原理。

答案:MVC的三种架构模式分别为:经典MVC架构模式,前端控制器模式以及页面控制器模式。

这三种架构模式的工作原理如下●经典MVC架构模式在这种模式下,用户在视图界面输入数据并点击按钮提交,控制器负责接收视图信息并对相应模型进行操作,根据用户提供的数据更新模型状态。

模型状态发生变化后控制器通知视图,视图根据模型的变化进行更新并显示给用户。

●前端控制器模式在这种模式下,分发器负责接收客户端浏览器发出的请求,并根据请求的URL地址将信息转发给特定的控制器。

控制器改变相应模型的状态并返回一个标识,该标识与指定视图存在映射关系,通过标识找到对应视图并在客户端浏览器显示执行结果。

●页面控制器模式这种模式与前端控制器模式的工作原理基本相似,二者的区别在于,页面控制器模式下将由页面发出针对某个具体模型的请求。

4.说明Spring MVC的基本工作流程。

答案:Spring MVC的基本工作流程分为如下几个步骤:(1)客户端发出Http请求。

(2)Spring容器的DispatcherServlet接收请求,并根据请求寻找相应的控制器。

(3)DispatcherServlet找到具体的控制器以后,将客户端请求分派给该控制器,控制器调用业务层相关业务对象处理请求。

(4)控制器处理完毕后,将ModelAndView返回给DispatcherServlet,其中ModelAndView 包含了逻辑视图名称以及物理视图所需要的数据信息。

(5)DispatcherServlet根据逻辑视图名称,寻找对应的物理视图。

其中,ViewResolver 负责建立逻辑视图与物理视图的映射关系。

(6)找到具体的物理视图以后,DispatcherServlet将其分派给View对象。

(7)View以Http响应形式将最终结果返回给客户端。

5.使用Struts2框架模拟实现用户登录。

实例内容:编写登录页面,提供用户名及密码的文本输入框以及提交按钮。

当用户在登陆页面输入正确的用户名“sunyang”及密码“1234”,进入登录成功界面,否则进入登录失败界面。

答案:(1)创建一个Web工程,名称为login,并在该工程中引入commons-logging-1.0.4.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,struts2-core-2.0.11.jar以及xwork-2.0.4.jar这5个运行库文件。

(2)在web.xml配置文件中添加Struts2控制器FilterDispatcher的相应配置,添加代码如下:<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>(3)在工程的com包下创建模型类LoginAction.java,该类用于处理业务逻辑请求。

添加代码如下:public class LoginAction {private String username; //用户名private String password; //密码public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String execute() {//如果用户名为sunyang,密码为1234,则登录成功,否则登录失败if(username.equals("sunyang")&&password.equals("1234"))return "loginSuccess";elsereturn "loginError";}}(4)在工程src根目录下创建Struts2框架的核心配置文件struts.xml,并添加loginAction 的相关配置信息。

struts.xml配置文件代码如下<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="sunyang" extends="struts-default"><!-- 配置前端控制器模式下的Action --><action name="login" class="com.LoginAction"><!-- Action执行成功跳转到success.jsp页面--><result name="loginSuccess">/success.jsp</result><!-- Action执行失败跳转到front.jsp页面--><result name="loginError">/error.jsp</result></action></package></struts>(5)在WebRoot下分别创建登录页面login.jsp,登录成功页面success.jsp以及登录失败页面error.jsp,具体实现代码如下login.jsp页面代码如下<%@ page language="java" contentType="text/html; charset=GBK"%><%@ taglib prefix="s" uri="/struts-tags"%><html><body><s:form action="login"><s:textfield name="username" label="用户名"/><s:password name="password" label="密码"/><s:submit value="确定"/><s:reset value="重置"/></s:form></body></html>success.jsp页面代码如下<%@ page language="java" contentType="text/html; charset=GBK"%><%@ taglib prefix="s" uri="/struts-tags"%><html><body>登录成功,欢迎您,<s:property value="username"/>!</body></html>error.jsp页面代码如下<%@ page language="java" contentType="text/html; charset=GBK"%><html><body><center>用户名或密码错误,请重新输入!<a href="login.jsp">返回登录页面</a></center></body></html>(6)发布并运行程序,进入登录页面,如下图所示当我们输入错误的用户名“sun”,密码“123”并点击确定按钮时,进入登录错误页面,如下图所示当我们输入正确的用户名“sunyang ”,密码“1234”并再次点击确定按钮时,进入登录正确页面,如下图所示。

相关主题