首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Servlet 基础(一)

2012-12-24 
Servlet 基础(1)一、什么是servlet:servlet是一个java程序,是在服务器端运行以处理客户端请求并做出响应的

Servlet 基础(1)

一、什么是servlet:

servlet是一个java程序,是在服务器端运行以处理客户端请求并做出响应的程序!

二、servlet常见代码(解析):

//创建servlet要导入的包
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;

//必须继承自HttpServlet
public class HelloServlet extends HttpServlet {
?
?/**
? * 实现doGet()或者doPost() 方法,以处理客户端请求
? * */
?public void doGet(HttpServletRequest request, HttpServletResponse response)
???throws ServletException, IOException {

??response.setContentType("text/html");
??PrintWriter out = response.getWriter();
??out
????.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");
??out.println("<HTML>");
??out.println("? <HEAD><TITLE>Hello Servlet</TITLE></HEAD>");
??out.println("? <BODY>");
??out.print("??? This is ");
??out.print(this.getClass());
??out.println(", using the GET method");
??out.println("? </BODY>");
??out.println("</HTML>");
??out.flush();
??out.close();
?}

?public void doPost(HttpServletRequest request, HttpServletResponse response)
???throws ServletException, IOException {
??doGet(request,response);
?}
}

三、JSP与Servlet之间的关系

大家都知道servlet与jsp都可以在页面上动态显示数据,那么他们之间到底存在什么样的关系呢?

我们新建下jsp页面:MyJsp.jsp

eg:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
? <head>
??? <title>MyJsp.jsp</title>
? </head>
? <body>
??? This is my JSP page. <br>
? </body>
</html>

接下来我们部署下我们的项目!并运行MyJsp.jsp

http://localhost:8089/Test/MyJsp.jsp

然后我们打开我们tomact安装目录找到jsp页面生成的java文件的路径:

C:\Program Files\Apache Software Foundation\Tomcat 6.0\work\Catalina\localhost\Test\org\apache\jsp

我们就会找到MyJsp_jsp.java文件,内容如下

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.util.*;

//继承了org.apache.jasper.runtime.HttpJspBase类

public final class MyJsp_jsp extends org.apache.jasper.runtime.HttpJspBase
??? implements org.apache.jasper.runtime.JspSourceDependent {

? private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();

? private static java.util.List _jspx_dependants;

? private javax.el.ExpressionFactory _el_expressionfactory;
? private org.apache.AnnotationProcessor _jsp_annotationprocessor;

? public Object getDependants() {
??? return _jspx_dependants;
? }

? public void _jspInit() {
??? _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
??? _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
? }

? public void _jspDestroy() {
? }

? public void _jspService(HttpServletRequest request, HttpServletResponse response)
??????? throws java.io.IOException, ServletException {

??? PageContext pageContext = null;
??? HttpSession session = null;
??? ServletContext application = null;
??? ServletConfig config = null;
??? JspWriter out = null;
??? Object page = this;
??? JspWriter _jspx_out = null;
??? PageContext _jspx_page_context = null;


??? try {
????? response.setContentType("text/html;charset=utf-8");
????? pageContext = _jspxFactory.getPageContext(this, request, response,
????? ???null, true, 8192, true);
????? _jspx_page_context = pageContext;
????? application = pageContext.getServletContext();
????? config = pageContext.getServletConfig();
????? session = pageContext.getSession();
????? out = pageContext.getOut();
????? _jspx_out = out;

????? out.write("\r\n");
????? out.write("<html>\r\n");
????? out.write("? <head>\r\n");
????? out.write("??? <title>MyJsp.jsp</title>\r\n");
????? out.write("? </head>\r\n");
????? out.write("? <body>\r\n");
????? out.write("??? This is my JSP page. <br>\r\n");
????? out.write("? </body>\r\n");
????? out.write("</html>\r\n");
??? } catch (Throwable t) {
????? if (!(t instanceof SkipPageException)){
??????? out = _jspx_out;
??????? if (out != null && out.getBufferSize() != 0)
????????? try { out.clearBuffer(); } catch (java.io.IOException e) {}
??????? if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
????? }
??? } finally {
????? _jspxFactory.releasePageContext(_jspx_page_context);
??? }
? }
}

解析:

HttpJspBase类继承了HttpServlet,如下:
public abstract class HttpJspBase extends javax.servlet.http.HttpServlet implements javax.servlet.jsp.HttpJspPage

下面跟清楚的看清了他们之间的一些关系:

java.lang.Object
? javax.servlet.GenericServlet
????? javax.servlet.http.HttpServlet
????????? org.apache.jasper.runtime.HttpJspBase

由上可见:Servlet是JSP的基础(即,JSP在运行前首先将编译为一个servlet)

?

每天一点点希望对大家有利!Servlet 基础(一)

热点排行