(第1讲)jsp简介

来源:互联网 发布:大淘客与淘宝联盟 编辑:程序博客网 时间:2024/05/21 04:39

1、为什么会出现jsp技术?

有部分原因是servlet做界面很不好,所以有了jsp。

jsp功能的强大是因为可以与javabean结合是用;即jsp做前台(界面)、javabean做后台(逻辑);

jsp+javabean+servlet就构成了mvc的开发模式。

2、jsp=html+java+jsp标签/语法+javascript+css

3、Jsp的基本语法:

     (1)指令元素:用于从jsp发送一个信息到容器,比如设置全局变量、文字编码、引入包等:

             1)page指令:<%@page contentTyoe="text/html;charset=gb2312"%>

              2)include指令:<%@ include file="filename"%>

              3)taglib指令:这个指令允许在jsp页面使用自定义的标签:  <myTag:yourTage num1="123">

    (2)脚本元素:  在一定程度上可以理解为java的片段

              1)scriplet:   <%java代码%>

              2)表达式:   <%=java表达式%><%=rs.getString(1)%>

              3)declaration声明 : 

                <%!变量声明%>  比如说:<! int count=10%>

                <%!函数声明%>  比如说:

                <%!int jisuan(int num)

                  {

                             int result = 0;
                             for(int i=0;i<num;i++){

                                         result = result+i;

                             }

                    }

%>

     (3)动作元素:是使用xml语法写 的,是jsp规定的一系列标准动作,在容器处理jsp时,当容器遇到动作元素时,就执行相应的操作。

             1)<jsp: useBean>  //创建一个javabean实例

             2)<jsp: setProperty>  //给一个javabean实例设置初始值

             3)<jsp: param>  //给一个jsp设置参数,常常与<jsp:include>结合使用

                         <jsp:include file="info.jsp">

                         <jsp: param name="parameter1" value="parameterValue“/>

                        <jsp: param name="parameter2" value="parameterValue“/>

                         < /jsp:include >

             4)<jsp: getProperty>  //取得一个javabean实例的成员变量

             5)<jsp: include>  //引入另外一个文件

             6)<jsp: plugin>  //使用插件

             7)<jsp: forward>  //转发

             8)<jsp: fallback>  //

                   这是最常用的8个动作元素,还有另外的

     (3)9大内置对象: 

             1) out对象:想客户端输出数据、字节流:out.println("");

             2) request对象:接受客户端的http请求   类似servlet中的HttpServletRequest对象

                    getParameter(String name);

                    getParameterValues(String name);

                    setAttribute(String name,Object value);

                    getAttribute(String name);

                    getCookie();

             3) response对象: 封装jsp产生的回应

                   addCookie( Cookie cookie);

                  sendRedirct( "/my.jsp");

             4) session对象: 用户保存用户的信息,跟踪用户的行为

                  setAttribute(String name,Object value);

                   getAttribute(String name);

             5) Application对象:多个用户共享该对此昂,可以做计数器

             6) pageCount对象:代表jsp页面的上下文

             7) exception对像:代表运行时的一个异常

                    getMessage();

             8) page对象:代表jsp这个实例本身

             9) config对象: 代表jsp对应的servlet的配置,可以得到 web,xml文件中的参数

4、浏览器访问jsp文件的过程:

如果是第一次访问, .jsp文件被服务器翻译成一个对应的java文件(servlet),然后在被编程成 .class文件,并加载到服务器内存中;

如果是以后访问,那就直接调用内存中的jsp实例(实例即为某个类的对象),所以第一次访问jsp慢,后面访问jsp 的速度就会变快了、

5、jsp 和 servlet区别与联系

区别:

        (1)如果jsp文件修改之后,不用tomcat 进行reload,但是servlet需要;

         (2)jsp的URL需要带上后缀,比如:http://localhost:8080/myWeb/hello.jsp   ;  servlet的URL不需要戴上后缀:http://localhost:8080/myWeb/hello

         (3)servlet编写完之后需要编译,因为是java文件,且需要进行部署;  而jsp既不需要自己手动的编译,也不用自己手动的部署。

         (4)jsp支持中文。

联系:

          (1)jsp 是以 servlet为基础的;

           (2)jsp第一次运次是被翻译为servlet,在编译为 .class文件,最后执行

6、一个jsp文件例子:jsp=html+java+jsp标签/语法+javascript+css

hello.jsp文件:

<%@ page contentType= "text/html;charset=gb2312"%>  这就是 jsp语法
<html> 这就是 html标签
  <body>
     <h1>jsp1</h1>
     <% out.println("hello,你好"); %>    这就是 java片段:一定是被尖括号和百分号包括起来的
  </body>
</html>

在tomcat安装目录下的work文件夹下的Catalina文件夹下的localhost文件夹下的myWeb文件夹下的apache文件夹下的jsp文件夹中就有被浏览器翻译为java文件的对应的servlet。

G:\tomcat\work\Catalina\localhost\myWeb\org\apache\jsp\hello.jsp文件:

/*
 * Generated by the Jasper component of Apache Tomcat
 * Version: Apache Tomcat/7.0.70
 * Generated at: 2016-09-02 02:48:27 UTC
 * Note: The last modified time of this file was set to
 *       the last modified time of the source file after
 *       generation to assist with modification tracking.
 */
package org.apache.jsp;

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

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

  private static final javax.servlet.jsp.JspFactory _jspxFactory =
          javax.servlet.jsp.JspFactory.getDefaultFactory();

  private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;

  private volatile javax.el.ExpressionFactory _el_expressionfactory;
  private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;

  public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
    return _jspx_dependants;
  }

  public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
    if (_el_expressionfactory == null) {
      synchronized (this) {
        if (_el_expressionfactory == null) {
          _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
        }
      }
    }
    return _el_expressionfactory;
  }

  public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
    if (_jsp_instancemanager == null) {
      synchronized (this) {
        if (_jsp_instancemanager == null) {
          _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
        }
      }
    }
    return _jsp_instancemanager;
  }

  public void _jspInit() {
  }

  public void _jspDestroy() {
  }

  public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
        throws java.io.IOException, javax.servlet.ServletException {

    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;


    try {
      response.setContentType("text/html;charset=gb2312");
      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("  \r\n");
      out.write("  </head>\r\n");
      out.write("  <body>\r\n");
      out.write("     <h1>jsp1</h1>\r\n");
      out.write("     ");
 
     int  a =0;
     int b = 9;
     int c = 9;
     out.println("hello,浣犲ソ"); 这个就是jsp文件中写的java片段
     

      out.write("\r\n");
      out.write("  </body>\r\n");
      out.write("</html>");
    } catch (java.lang.Throwable t) {
      if (!(t instanceof javax.servlet.jsp.SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          try {
            if (response.isCommitted()) {
              out.flush();
            } else {
              out.clearBuffer();
            }
          } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
        else throw new ServletException(t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}


0 0
原创粉丝点击