JSP培训(6)——使用Servlet作为控制器实现MVC模式

来源:互联网 发布:阿里云的ip地址 编辑:程序博客网 时间:2024/05/16 19:09

目标:
l         初步理解MVC模式;
l         掌握Servlet的编写;
l         使用MVC模式完成登录功能。
主要内容:
l         分析JSP+JavaBean模式存在的问题,并介绍JSP+JavaBean+Servlet模式,以及和MVC模式的关系;
l         通过简单实例介绍Servlet的编写、配置和运行;
l         采用Servlet完成登录功能的控制。
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模式把系统的业务逻辑、控制和输入输出进行分离,在开发应用的时候,可以单独考虑某一部分,简化开发。
V,表示视图,与人交户的部分,M,表示模型,完成功能,C,表示控制器。JSP通常充当视图,JavaBean是模型,Servlet作为控制器。
3、 什么是Servlet
Servlet也是一种Web组件,从完成的功能上来说,与JSP是相同的。Servlet是纯Java文件,是特殊的Java类。
Servlet与JavaBean有什么区别呢?都是Java类,但是Serlvet可以接收用户的请求,客户端可以直接访问。但是JavaBean不能被客户端直接访问,必须由JSP或者其他的Java文件(包括Servlet)来调用。
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、 测试运行
访问登录界面,输入信息,然后提交。
这时候会报错,提示请求方式不支持。需要在Servlet中增加如下方法:
   public void doPost(HttpServletRequest request,HttpServletResponse response)
     throws IOException,ServletException
   {
      doGet(request,response);
   }
因为JSP页面中的请求方式为post,所以Servlet中需要提供doPost方法,方法的定义和doGet相同,这里方法的实现只需要调用doGet方法即可。
8、 Servlet的主要方法
init方法,用于初始化;
服务类方法:doGet方法和doPost方法
destroy方法,释放资源
9、 生命周期
服务器接收到请求之后,会把请求信息封装成HttpServletRequest对象和HttpServletResponse对象。
第一次访问servlet的时候,加载类,创建对象,初始化(init方法),调用服务类方法(如果是get请求,调用doGet方法,如果是post请求,调用doPost方法)。
后续访问,直接调用服务器类方法。
卸载Servlet的时候,或者关闭服务器的时候,调用destroy方法释放资源。
参考教材:《Java Web程序设计基础教程》

JSP培训目录:

JSP培训(1)——概述
JSP培训(2)——运行原理、文档结构、简单输入输出
JSP培训(3)——客户端验证、常用输出方式、JSTL基本用法
JSP培训(4)——实例:登录功能、jsp:forward标签、jsp:include标签、include指令、EL、c:if
JSP培训(5)——使用JavaBean完成业务逻辑
JSP培训(6)——使用Servlet作为控制器实现MVC模式
JSP培训(7)——使用JDBC完成动态验证、采用MVC完成数据查询
JSP培训(8)——添加功能和分页显示
JSP培训(9)——使用MVC模式完成删除和修改功能
JSP培训(10)——使用JavaBean封装对数据库的访问、连接池的配置和使用
JSP培训(11)——Java Web中的安全控制
JSP培训(12)——Java Web应用国际化
JSP培训(13)——异常处理
JSP培训(14)——购物车实例(上)
JSP培训(15)——购物车实例(下)及小结
返回JSP培训目录
原创粉丝点击