首页 > 编程 > JSP > 正文

JSP使用Servlet作为控制器实现MVC模式实例详解

2024-09-05 00:22:20
字体:
来源:转载
供稿:网友

这篇文章主要介绍了JSP使用Servlet作为控制器实现MVC模式的方法,以完整实例形式较为详细的分析了MVC模式的原理及Servlet实现MVC模式的原理与相关注意事项,需要的朋友可以参考下

本文实例讲述了JSP使用Servlet作为控制器实现MVC模式的方法。分享给大家供大家参考。具体如下:

一、目标:

① 初步理解MVC模式;

② 掌握Servlet的编写;

③ 使用MVC模式完成登录功能。

二、主要内容:

① 分析JSP+JavaBean模式存在的问题,并介绍JSP+JavaBean+Servlet模式,以及和MVC模式的关系;

② 通过简单实例介绍Servlet的编写、配置和运行;

③ 采用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)文件编写

 

  1. package servlet; 
  2. // Servlet开发所需要的包 
  3. import java.io.*; 
  4. import javax.servlet.*; 
  5. import javax.servlet.http.*; 
  6. public class HelloServlet extends HttpServlet 
  7. public void doGet(HttpServletRequest request,HttpServletResponse response) 
  8. throw IOException,ServletException 
  9. response.setContentType("text/html;charset=gb2312"); 
  10. PrintWriter out = response.getWriter(); 
  11. out.print("Servlet测试!"); 

2)编译

需要把C:/Program Files/Apache Software Foundation/Tomcat 6.0/lib/servlet-api.jar配置到classpath中,然后编译。

3)配置

在配置文件web.xml中写。包括两部分:声明和访问方式设置。

声明:

 

 
  1. <servlet> 
  2. <servlet-name>hello</servlet-name> 
  3. <servlet-class>servlet.HelloServlet</servlet-class
  4. </serlvet> 

访问方式设置:

 

 
  1. <servlet-mapping> 
  2. <servlet-name>hello</servlet-name> 
  3. <url-pattern>/hello</url-pattern> 
  4. </servlet-mapping> 

5、 测试

访问:http://127.0.0.1:8080/ch6/hello

6、 如何采用这种模式实现登录功能?

界面界面和响应界面都不需要修改,JavaBean完成处理,也不需要改变,只是使用Servlet来替换原来的login-process.jsp,完成控制功能。

1)参考代码如下:

 

 
  1. package servlet; 
  2. import java.io.*; 
  3. import javax.servlet.*; 
  4. import javax.servlet.http.*; 
  5. import javabean.*; 
  6. public class LoginProcess extends HttpServlet 
  7. public void doGet(HttpServletRequest request,HttpServletResponse response) 
  8. throws IOException,ServletException 
  9. // 第一步:获取用户的输入信息 
  10. String username = request.getParameter("username"); 
  11. String userpass = request.getParameter("userpass"); 
  12. // 第二步:调用JavaBean 
  13. User user = new User(); 
  14. user.setUsername(username); 
  15. user.setUserpass(userpass); 
  16. boolean b = user.check(); 
  17. // 第三步:选择一个界面对用户进行响应 
  18. String forward; 
  19. if(b) 
  20. forward = "success.jsp"
  21. else 
  22. forward = "failure.jsp"
  23. RequestDispatcher rd = request.getRequestDispatcher(forward); 
  24. rd.forward(request,response); 

上面的代码基本上展示了Servlet作为控制器的基本功能。

2)配置

 

 
  1. <servlet> 
  2. <servlet-name>process</servlet-name> 
  3. <servlet-class>servlet.LoginProcess</servlet-class
  4. </servlet> 
  5. <servlet-mapping> 
  6. <servlet-name>process</servlet-name> 
  7. <url-pattern>/process</url-pattern> 
  8. </servlet-mapping> 

3)修改登录界面的action属性

 

 
  1. <%@ page contentType="text/html;charset=gb2312"%> 
  2. 请登录<br> 
  3. <form name="form1" method="post" action="process"
  4. 用户ID:<input type="text" name="username"><br> 
  5. 口令:<input type="password" name="userpass"><br> 
  6. <input type="submit" value="登录"><input type="reset" value="重置"
  7. </form> 
  8. <%@ include file="contact.jsp"%> 

7、 测试运行

访问登录界面,输入信息,然后提交。

这时候会报错,提示请求方式不支持。需要在Servlet中增加如下方法:

 

 
  1. public void doPost(HttpServletRequest request,HttpServletResponse response) 
  2. throws IOException,ServletException 
  3. 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方法释放资源。

希望本文所述对大家的JSP程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表