你的位置:首页 > Java教程

[Java教程]Servlet 和 JSP 概述


说到Java web开发,就不得不提Servlet 和 JSP。这两者是java web开发技术。虽然现在有这么多的web框架,公司中很少会用这两个技术来直接开发项目,但是理解了这两个技术,一则会让你对web的基础知识要很深的了解,二则学其他的相比来说要更好理解点。

一、Servlet

1. 什么是servlet?

servlet是运行在Web服务器上的java程序。是一个中间层,负责连接来自Web浏览器或其他Http请求和Http服务器上的数据库或应用程序。

2. Servlet的作用是什么?

a. 读取用户发送的显示数据和浏览器发送的隐式请求数据。

显示数据一般是页面上输入的表单数据。

隐式数据即Http信息,如cookie, 浏览器能够识别的的媒体类型或压缩模式等。

b. 生成结果。

这里会做业务逻辑的处理,如访问数据库或其他复杂操作。也会生成需要直接返回给浏览器的结果及Html内容。

c. 向客户发送显示数据和隐式的Http响应数据。

显示数据即用户能够看到的结果。

Http响应数据,如cookie设置及缓存参数。客户端浏览器会读取并处理这些信息。

3. Servlet例子

这个例子只是为了让读者对Servlet有个了解,没有给出其他配置,故不能直接运行,后边会有详细介绍。

package demo0103;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ServletOverview extends HttpServlet{  public void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException{        String contentType = "text/html";    response.setContentType(contentType);    PrintWriter writer = response.getWriter();    String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";    String html = "<html>\n" +         "<head>\n" +           "<title>Hello World</title>\n" +         "</head>\n" +          "<body>\n" +            "<h1>Hello World</h1>\n" +         "</body>\n" +         "</html>\n";    writer.println(docType + html);  }}

View Code

 显示运行结果:

 

 

二、JSP

1. 什么是JSP?

JSP(全称Java Server Pages)是由Sun Microsystems公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成HTML、

2. JSP的作用?

JSP可以完成Servlet所能完成的功能。

简单来说,可以将Servlet看作是含有HTML的java程序。将JSP看作是含有java代码的HTML的页面。

3. JSP例子

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Hello World</title></head><body>  <h1>Hello World</h1></body></html>

View Code

显示结果:

 

Servlet可以完成JSP所能完成的功能,同样JSP也可以完成Servlet所能完成的功能。如何选择呢?

为了方便性、易用性和可维护性,二则结合是最好的处理方式。

对于业务逻辑的任务,servlet是最好的选择。

对于显示的任务,JSP是最好的选择。

后面要讲到的MVC模式是对二者主应用的很好诠释。

 

以上只是自己的理解,如果有不妥之处,还望指出。