JSP使用Servlet作为控制器实现MVC模式实例详解 |
|
本文实例讲述了JSP使用Servlet作为控制器实现MVC模式的方法 。分享给大家供大家参考 。具体如下: 一、目标: ① 初步理解MVC模式; 二、主要内容: ① 分析JSP+JavaBean模式存在的问题,并介绍JSP+JavaBean+Servlet模式,以及和MVC模式的关系; 1、 JSP+JavaBean这种模式存在的问题? JSP的强大之处在与人交互,也就是完成输入输出的功能 。但是在JSP+JavaBean这种模式中,JSP不仅仅完成输入输出的功能,还完成系统的控制功能(接收用户请求,调用JavaBean,然后根据调用的结果,选择界面对用户进行响应) 。所以在JSP发展的第三个阶段中,把控制功能从JSP中分离出来,使用Servlet来实现,形成JSP+JavaBean+Servlet这种模式,JSP仅仅完成输入和输出,JavaBean完成处理,而Servlet完成控制 。 2、 JSP+JavaBean+Servlet JSP负责输入输出,JavaBean负责实现业务逻辑(功能),Servlet完成控制 。这种模式通常也被认为是MVC模式的一种实现 。MVC模式把系统的业务逻辑、控制和输入输出进行分离,在开发应用的时候,可以单独考虑某一部分,简化开发 。 3、 什么是Servlet Servlet也是一种Web组件,从完成的功能上来说,与JSP是相同的 。Servlet是纯Java文件,是特殊的Java类 。 4、 实例:HelloServlet 下面是一个Servlet,完成的功能是输出一句话"Servlet测试!" 。 1)文件编写
package servlet;
// Servlet开发所需要的包
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throw IOException,ServletException
{
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.print("Servlet测试!");
}
}
2)编译 需要把C:/Program Files/Apache Software Foundation/Tomcat 6.0/lib/servlet-api.jar配置到classpath中,然后编译 。 3)配置 在配置文件web.xml中写 。包括两部分:声明和访问方式设置 。 声明: <servlet> <servlet-name>hello</servlet-name> <servlet-class>servlet.HelloServlet</servlet-class> </serlvet> 访问方式设置: <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> 5、 测试 访问:http://127.0.0.1:8080/ch6/hello 6、 如何采用这种模式实现登录功能? 界面界面和响应界面都不需要修改,JavaBean完成处理,也不需要改变,只是使用Servlet来替换原来的login-process.jsp,完成控制功能 。 1)参考代码如下:
package servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javabean.*;
public class LoginProcess extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
{
// 第一步:获取用户的输入信息
String username = request.getParameter("username");
String userpass = request.getParameter("userpass");
// 第二步:调用JavaBean
User user = new User();
user.setUsername(username);
user.setUserpass(userpass);
boolean b = user.check();
// 第三步:选择一个界面对用户进行响应
String forward;
if(b)
forward = "success.jsp";
else
forward = "failure.jsp";
RequestDispatcher rd = request.getRequestDispatcher(forward);
rd.forward(request,response);
}
}
上面的代码基本上展示了Servlet作为控制器的基本功能 。 2)配置 <servlet> <servlet-name>process</servlet-name> <servlet-class>servlet.LoginProcess</servlet-class> </servlet> <servlet-mapping> <servlet-name>process</servlet-name> <url-pattern>/process</url-pattern> </servlet-mapping> 3)修改登录界面的action属性
<%@ page contentType="text/html;charset=gb2312"%>
请登录<br>
<form name="form1" method="post" action="process">
用户ID:<input type="text" name="username"><br>
口令:<input type="password" name="userpass"><br>
<input type="submit" value="登录"><input type="reset" value="重置">
</form>
<%@ include file="contact.jsp"%>
7、 测试运行 访问登录界面,输入信息,然后提交 。
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException
{
doGet(request,response);
}
因为JSP页面中的请求方式为post,所以Servlet中需要提供doPost方法,方法的定义和doGet相同,这里方法的实现只需要调用doGet方法即可 。 8、 Servlet的主要方法 init方法,用于初始化; 9、 生命周期 服务器接收到请求之后,会把请求信息封装成HttpServletRequest对象和HttpServletResponse对象 。 希望本文所述对大家的JSP程序设计有所帮助 。 |