Jsp学习(1)

Servlet的用作:用java语言开发动态资源的技术;

Jsp的作用:用java语言(+html)开发动态的资源,其实jsp就是servlet演化而来的。

Jsp的执行过程:

  我们先来做一个实验,首先在项目的webroot下创建一个hellojsp页面,期其代码如下:

<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP ‘hello.jsp‘ starting page</title>

	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
  </head>
  <body>
    <% SimpleDateFormat date=new SimpleDateFormat();
    	String curDate=date.format(new Date());
    	out.write("现在时间是:"+curDate);
     %>
  </body>
</html>

我们会发现在tomcat的目录的work下会新建一个文件

会发现原来的hello.jsp页面被重新翻译成了hello_jsp.java的java源文件和被编译的hello_jsp.class的字节码文件,这个时候我们打开其java源文件,发现其中类的关系如下:

这个hello_jsp类继承自HttpJspBase,我们继续根据其前面org.apache.jasper.runtime的信息去tomcat的包下面去查找相关的内容:

继承自HttpServlet的类,说明了Jsp也是一个Servlet程序,因为Servlet有生命周期,即Jsp也有生命周期。可以看看在hello_jsp。java的部分代码

这个时候我们可以类比Servlet总结一下Jsp的生命周期

(1)、翻译:将jsp文件翻译成一个java源文件  (第一次访问时完成)

(2)、编译:将java源文件编译成一个字节码文件(第一次访问时完成)

(3)、构造方法,服务器构造和调用hello_jsp类对象(第一次访问时完成)

(4)、Init方法  [_jspInit()]  (第一次访问时完成)

(5)、service方法[_jspService]

(6)、destory方法。[_jspDestroy]

既然jsp就是一个servlet的程序,那么我们就可以在jsp中使用servlet的方法,同时jsp也在一定的基础上扩展了serlet的功能,即jsp的技术并不是全部

servlet技术。


jsp语法:

1、 Jsp表达式

作用: 向浏览器输出变量的值或表达式计算的结果

2*3=<%=(2*3) %>

2、 Jsp的脚本

把脚本中java代码原封不动拷贝到_jspService方法中执行。

<% Random random=new Random();
     	float f=random.nextFloat();
      %>
      <%=f %>

3、 Jsp的声明

语法:<%! 变量或方法 %>

作用: 声明jsp的变量或方法

注意:1)变量翻译成成员变量,方法翻译成成员方法。

 <%--声明成员变量(全局变量) --%>
      <%! String name="gqxing";%>

4、 Jsp的注释 

<%--  jsp注释  --%>

我们来看看现在hello_jsp.java文件(就是方便了我们写html代码)

String name="gqxing";
  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("\r\n");

String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

      out.write("\r\n");
      out.write("\r\n");
      out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");
      out.write("<html>\r\n");
      out.write("  <head>\r\n");
      out.write("    <base href=\"");
      out.print(basePath);
      out.write("\">\r\n");
      out.write("    \r\n");
      out.write("    <title>My JSP ‘hello.jsp‘ starting page</title>\r\n");
      out.write("    \r\n");
      out.write("\t<meta http-equiv=\"pragma\" content=\"no-cache\">\r\n");
      out.write("\t<meta http-equiv=\"cache-control\" content=\"no-cache\">\r\n");
      out.write("\t<meta http-equiv=\"expires\" content=\"0\">    \r\n");
      out.write("\t<meta http-equiv=\"keywords\" content=\"keyword1,keyword2,keyword3\">\r\n");
      out.write("\t<meta http-equiv=\"description\" content=\"This is my page\">\r\n");
      out.write("  </head>\r\n");
      out.write("  <body>\r\n");
      out.write("    ");
 SimpleDateFormat date=new SimpleDateFormat();
    	String curDate=date.format(new Date());
    	out.write("现在时间是:"+curDate);

      out.write("\r\n");
      out.write("     </br>\r\n");
      out.write("     2*3=");
      out.print((2*3) );
      out.write("\r\n");
      out.write("     </br>\r\n");
      out.write("     \r\n");
      out.write("     ");
 Random random=new Random();
     	float f=random.nextFloat();

      out.write("\r\n");
      out.write("      ");
      out.print(f );
      out.write("\r\n");
      out.write("      ");
      out.write("\r\n");
      out.write("  </body>\r\n");
      out.write("</html>\r\n");

  

时间: 2024-08-01 18:35:30

Jsp学习(1)的相关文章

servlet和jsp学习指南(一)servlet

近期接触了些纯servlet与jsp的编程项目,顺便把<servlet和jsp学习指南>这本书拿出来看看,感悟良多.记下随笔,以便会议. 要编写一个servlet首先要实现Servlet或者继承HttpServlet package test.com.servlet; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet

Servlet&JSP学习笔记

Servlet&JSP学习笔记 */--> Servlet&JSP学习笔记 Table of Contents 1 Web容器 2 内置对象 2.1 内置对象分类 2.1.1 out 2.1.2 request 2.1.3 application 2.1.4 response 2.1.5 session 2.1.6 其他 3 JavaBean 3.1 JSP动作元素 3.2 javabean的四个作用於范围 4 JSP状态管理 4.1 Cookie 4.2 include 指令与动作

蜗牛—JSP学习之JavaBean初识

初识: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" +

Servlet&amp;Jsp学习笔记归纳图(一)

转载请注明出处!!!版权必究!! 以下是Servlet&Jsp的学笔记归纳图,详细内容以及相关代码会在后面整理完成 后给出 使用的是思维导图工具:MindManager 6 最新版本是2013,有兴趣的自己百度下载,功能更多,安装有点麻烦 以下提供版本6绿色版免安装版下载: http://pan.baidu.com/s/1jGqlnXc 本节思维导图文件下载:http://pan.baidu.com/s/1eQGbMSU Servlet&Jsp学习笔记归纳图(一),布布扣,bubuko.c

JSP 学习二

在基于昨天对JSP学习的基础上,今天我们来学习JSP的指令和JSP 对中文的处理. 一.JSP指令简介 JSP 指令是为JSP引擎而设计,它并不直接产生任何可见的输出,而只是告诉引擎如何处理JSP页面中其余的部分. JSP的指令共定义了三个指令: page指令 include指令 taglib指令 JSP指令的基本语法格式:<% @ 指令 属性名=“值” %> 例如: <% @ page contentType="text/html";charset="gb

JSP 学习

在WEB 项目开发中JSP 占据着举足轻重的地位,虽然其使用很简单,但是非常的重要.本节课开始学习JSP. 1 JSP 学习 问题: 在学习了Servlet 之后,使用Servlet 进行页面的展现,代码书写过于麻烦.极大的影响了开发的效率,那么有没有一种方式可以让我们像以前写网页一样来进行网页的编程工作呢? 解决: 使用JSP 技术 概念: JSP 全名为Java Server Pages,中文名叫 java 服务器页面,其根本是一个简化的Servlet 设计,它 [1] 是由Sun Micr

jsp学习(Tomcat服务器+myeclipse)

阅读前提:了解Tomcat服务器和Servlet 在web开发中我们可以通过Servlet的Response对象对浏览器输出我们的网页内容 这样虽然可以进行网页输出,但是代码编写极其繁杂,冗余很多,所以jsp就出现了: 先描述一下现象,首先我们可以在myeclipse新建Manager的web project,在WebRoot下会有index.jsp文件: 1 <%@ page language="java" import="java.util.*" page

jsp——学习篇:初始激励

这几天开始学习JSP啦,感觉自己有点懒!就想着编写着随笔,边学习!将自己的学习过程与大家分享,一是来督促自己,二是与大家交流学习心得!一起进步,哪里有不对的地方,大家多多海涵哈! 这次就不说技术,只来激励!下节开始正式学习! 这里给大家分享一句我喜欢的话:学会理性,在任何情况下做最佳的选择!

JSP学习笔记(一):JSP标签

JSP的六大标签,分别是JSP命令标签.JSP申明标签.JSP script标签.JSP输出标签.JSP注释标签.JSP动作标签. 关于标签的具体用法,还是在实际运用中去体验比较可靠,用的过程中学习是一种很重要的方法.

servlet和jsp学习指南(三)监听器

监听器是为了能够在servlet/jsp应用程序中进行事件驱动编程(Event-Driven Programming),所有事件类源自java.util.Event,并且监听器在以下三个不同级别中均可用:ServletContext.HttpSession及ServletRequest. 我选择性的学习ServletContextListener.主要是其他的在项目中没有看到使用.有用到再来补充学习. javax.servlet.ServletContextListener.这是对Servlet