JSP学习---jsp简介和理解jsp的本质

来源:互联网 发布:红帽linux 10天就重启 编辑:程序博客网 时间:2024/06/05 08:47

本篇博课知识点:
1.jsp技术简介
2.Tomcat首次访问JSP的过程:
3.JSP语法:
4.代码演示

jsp技术简介

  • JSP是Java Server Page的缩写,它是Servlet的扩展,它的作用是简化网站的创建和维护。
  • JSP是HTML代码与Java代码的混合体。
  • JSP形式上像HTML,但本质上是Servlet。

Jsp页面的代码全部是由java语言代码和HTML语言代码组成,那么为什么说JSP本质是Servlet?— 查看源码
先把含有jsp页面的项目发布,启动服务器,然后去Tomcat里面找生成的jsp文件的源码
我的路径

E:\Tomcat\apache-tomcat-7.0.30-windows-x86\apache-tomcat-7.0.30\work\Catalina\localhost\jspDemo\org\apache\jsp\jsps

这里写图片描述
生成的.java文件继承一个类
这里写图片描述
这个类。

org.apache.jasper.runtime.HttpJspBase

然后我再Tomcat的lib目录下面找到了这个包
这里写图片描述

再利用反编译软件打开,查看源代码
这里写图片描述
发现两点;
1:继承了HttpServlet
这里写图片描述
2.写了Servlet方法–调用了一个抽象方法
这里写图片描述
这里写图片描述

这个抽象方法就是 我们 Tomcat服务器把我们写的JSP文件编译成Java文件的主要方法;
这里写图片描述
并且把我们JSP页面所有的东西都包装在这个方法里面了。
这里写图片描述

用一句话说: 我们写的所有JSP代码 都是写在一个Servlet的service方法里面. 所以转一圈—-我们的JSP就是一个Servlet。

那么为什么要这么做? 肯定是优化了—简化网站的创建和维护。

怎么优化的? 在于他的九大内置对象。 并且我们仔细看会发现这九大内置对象,都是我们servlet里面用的比较多
这里写图片描述

除了 PageContext、pag和exception三个外,剩下的我们都用的很熟了

ServletContext application、HttpSession session、 ServletConfig config、request、response、 out.这就是JSP的本质—servlet

Tomcat(服务器)首次访问JSP的过程:
这里写图片描述

(其中一个细节是: 当网站主页打开、有用户访问JSP文件时,服务器才会把他编程.java文件)

下面两句代码区别

contentType="text/html; charset=utf-8"pageEncoding="UTF-8"

第一句是 告诉浏览器用什么样的编码打开,服务器发过去的文件。
第二句是 告诉服务器,把这个JSP页面编译成 servlet.java文件时候用什么编码

JSP语法:

  • JSP指令。:<%@ 指令名 属性=“值”%>
  • JSP声明。成员变量,或是成员方法.: <%! …. %>
  • Java程序片段。不论有多少这样的代码块,都将包含_jspSerivice方法中。:<% … %>
  • Java表达式。-快速输出信息. <%= …%>

演示代码

<%@ page language="java" import="java.util.*,javax.swing.*" contentType="text/html; charset=utf-8"  pageEncoding="UTF-8"%><!-- JSP中写Java脚本的方式1: 指令   --><%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>    <title>JSP技术演示页面</title>  </head>  <body>    This is my JSP page. <br>    <a href="<%=path%>/jsps/demo2.jsp">aa</a>    <!-- JSP中写Java脚本的方式2: 普通的Java代码段。翻译后变成jspService()内部的局部代码段   -->    <%       String s="dsjkdsjk";     %>    <form action="demo1.jsp" method="post">        Name:<input type="text" name="name"/> <br/>        Pwd:<input type="password" name="pwd"/> <br/>        <input type="submit"/>    </form>    <%      //response,out,  application,session,request,pageContext,   page, config, exception      out.println(s);     %>    <div>湖南城市学院OKOK<font color=red size=20pt >暑假</font>很热</div>    <% //Tomcat翻译成jspServlet,把下面的代码嵌入到jspService()方法中        request.setCharacterEncoding("utf-8");        String name = request.getParameter("name");        String pwd = request.getParameter("pwd");        if(name!=null && name.equals(pwd)){           out.println("欢迎你,"+name);           Date d = new Date();           out.println( d.toString()  );        }     %>         <!-- JSP中写Java脚本的方式3(比普通多了个叹号): 翻译后变成jspServlet类的成员变量或成员方法   -->        <%! //声明成jspServlet类中的成员变量                int ss=10;                public String aa(){                   return "ss="+ss;                }         %>       <%        out.println( aa() );        %>     <br/>输出类的成员变量ss的值:    <!-- JSP中写Java脚本的方式4: 一种在页面当前位置输出变量内容的写法   -->    <%=ss %>    <%--            这是JSP的注释     --%>    <%@include file="demo2.jsp" %>  </body></html>

效果
这里写图片描述