zoukankan      html  css  js  c++  java
  • JSP

    JSP

    jsp:java server pages(java服务器页面)
        本质上jsp就是一个servlet,在html代码中嵌套java代码,
        运行在服务器端,处理请求,生成动态的内容.
        对应的java和class文件在tomcat目录下的work目录
        后缀名 .jsp
      执行流程:
            1.浏览器发送请求,访问jsp页面
            2.服务器接受请求,jspSerlvet会帮我们查找对应的jsp文件
            3.服务器将jsp页面翻译成java文件.
            4.jvm会将java编译成.class文件
            5.服务器运行class文件,生成动态的内容.
            6.将内容发送给服务器,
            7.服务器组成响应信息,发送给浏览器
            8.浏览器接受数据,解析展示
    jsp的脚本:    
            <%...%> java程序片段
                生成成jsp的service方法中
            <%=...%> 输出表达式
                生成成jsp的service方法中,相当于在java中调用out.print(..)
            <%!...%> 声明成员
                成员位置.

      小案例-jsp脚本

       jsp页面代码:

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
        <!-- 1、浏览器中输出hello world -->
        hello world!<br/>
        
        <!-- 2、eclipse中console输出:3 -->
        <%
        int i = 3;
        System.out.println(3);
        %>
        
        <!-- 3、浏览器输出:3 -->
        <%=i %>
        
        <!-- 4、浏览器输出,但是中文乱码 -->
        <%
        out.print("你好");
        %>
        
        <!-- 浏览器输出为:9 -->
        <%=k %>
        <%!
            int k=9;
        %>    
    </body>
    </html>
    jsp的指令
        作用:声明jsp页面的一些属性和动作
        格式:
            <%@指令名称 属性="值" 属性="值"%>
        jsp指令的分类:
            page:主要声明jsp页面的一些属性、以及jar包
            include:静态包含.
            taglib:导入标签库
        注意:
            一个页面中可以出现多个指令
            指令可以放在任意位置,一般都放在jsp页面最上面.
    运行在服务器端,本质上就是一个serlvet,产生的java文件和class保留在tomcat的word目录下.
    <%@page import="org.apache.jasper.tagplugins.jstl.core.ForEach"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@page import="java.util.*" %>
    page指令:
            重要属性:3个
                contentType:设置响应流的编码,及通知浏览器用什么编码打开.设置文件的mimetype
                pageEncoding:设置页面的编码
                import:导入所需要的包
                contentType和pageEncoding联系:
                    若两者都出现的时候,各自使用各自的编码
                    若只出现一者,两个都使用出现的这个编码
                    若两者都不出现,使用服务器默认的编码 tomcat7使用的iso-8859-1
            了解属性:
                language:当前jsp页面里面可以嵌套的语言
                buffer:设置jsp页面的流的缓冲区的大小
                autoFlush:是否自动刷新
                extends:声明当前jsp的页面继承于那个类.必须继承的是httpservlet 及其子类
                session:设置jsp页面是否可以使用session内置对象
                isELIgnored:是否忽略el表达式
                errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面
                isErrorPage:当前jsp页面是否是一个错误页面
                    若值为true,可以使用jsp页面的一个内置对象 exception
    include指令:
        静态包含,就是将其他页面或者servlet的内容包含进来,一起进行编译运行.生成一个java文件.
            格式:
                <%@include file="相对路径或者是内部路径" %>
            例如:
                <%@include file="/jsp/include/i1.jsp" %>
      路径:
          相对路径:
              ./或者什么都不写 当前路径
              上一级路径  ../
          绝对路径:
              带协议和主机的绝对路径
              不带协议和主机的绝对路径
                  /项目名/资源
                        
          内部路径:
              不带协议和主机的绝对路径去掉项目名
                  请求转发 静态包含 动态包含

    示例---include指令:

       include.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>include指令</title>
    </head>
    <body>
        include页面
        <hr>
            text.jsp的内容为:<%@include file="/text.jsp" %>
        <hr>
    </body>
    </html>

      text.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>text页面</title>
    </head>
    <body>
        这是一个测试页面,嘻嘻嘻~~~~<hr><a style="color:red;">点我跳转</a>
    </body>
    </html>
    taglib指令:导入标签库    
            格式:
                 <%@taglib prefix="前缀名" uri="名称空间" %>
            若导入之后
                <前缀名:标签 .. >
            例如:
                <c:if test="">输出内容</c:if>
    jsp的内置对象:★★★(9大内置对象):即在jsp页面上可以直接使用的对象
            内置对象            类型
            out                JspWriter
            request            HttpServletRequest
            response        HttpServletResponse
            session            HttpSession
            
            exception        Throwable
            
            page            Servlet(this)
            config            ServletConfig
            application        ServletContext
            
            pageContext        PageContext
    jsp的域对象:理解
            application        整个项目
            session            一次会话
            request            一次请求
            pageContext        一个页面
    pagecontext作用:理解
            1.域对象
                xxxAttribute()
            2.操作其他域对象
                方法:
                    xxxAttribute(...,int scope);
                        scope取值:
                            APPLICATION_SCOPE 
                            SESSION_SCOPE 
                            REQUEST_SCOPE 
                            PAGE_SCOPE 
            3.获取其他的内置对象
                getXxx()
                注意:
                    getRequest():获取request内置对象
            4.便捷查找,
                findAttribute(String key):
                    依次从pagecontext,request,session,application四个域中,查找相应的属性,若查找到了返回值,且结束该次查找
                    若查找不到,返回一个null

    案例:pageContext操作其他域对象

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>pageContext操作其他的域对象</title>
    </head>
    <body>
        <%
            pageContext.setAttribute("rkey", "rvalue",pageContext.REQUEST_SCOPE);
        %>
        
        通过pageContext往request中放入一个键值对,取出来为:
        <%=request.getAttribute("rkey")%>
    </body>
    </html>

       启动tomcat,浏览器中输入url,回车,查看页面显示如下:

    jsp的动作标签
        <jsp:forward>:请求转发  相当于java中  request.getRequestDispatcher(..).forward(..);
            <jsp:forward page="内部路径"></jsp:forward>
        <jsp:include>:动态包含
            就是将被包含页面或者servlet的运行结果包含到当前页面中.

    案例1--jsp动作标签forward

      forward.jsp 

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>text页面</title>
    </head>
    <body>
        <jsp:forward page="/for1.jsp"></jsp:forward>
    </body>
    </html>

      for1.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>text页面</title>
    </head>
    <body>
        已经跳转到for1.jsp页面了~~~~
    </body>
    </html>

      浏览器输入url“ http://localhost:8080/Jsp/forward.jsp”,显示for1.jsp的页面内容,但是url不变:

    案例2--jsp动作标签include:

       include2.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>include动作标签</title>
    </head>
    <body>
        include动作标签
        <hr>
            <jsp:include page="/text.jsp"></jsp:include>        
        <hr>
    </body>
    </html>

      text.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>text页面</title>
    </head>
    <body>
        这是一个测试页面,嘻嘻嘻~~~~<hr>
    </body>
    </html>

      启动tomcat,浏览器中输入http://localhost:8080/Jsp/include2.jsp,回车,

    jsp注释:
        html注释 <!--  -->
            注释的内容只在页面上看不到  java代码和html源代码都有
        java注释 
            只在java代码中存在
        jsp注释 <%--  --%>
            只在jsp页面中存在,翻译成java文件之后就没有了

    el:
      jsp的内置表达式语言,从jsp2.0开始,用来替代<%=..%>
    具体参见博客:https://www.cnblogs.com/hejh/p/11063216.html

    jstl:
      jsp标准的标签库语言,apache的,用来替代java脚本
    参见博客:https://www.cnblogs.com/hejh/p/11063258.html

  • 相关阅读:
    Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1
    Matlab高级教程_第一篇:Matlab基础知识提炼_06
    利用ubuntu的alias命令来简化许多复杂难打的命令
    无线路由设置
    解决Ubuntu下使用命令行subl 打开Sublime text3无法输入中文的问题
    ubuntu 14.04 lamp 安装与配置
    ubuntu14.04 login loop issue
    机器学习资源大全
    技巧:利用putty通过win7访问ubuntu
    使用XML-RPC进行远程文件共享
  • 原文地址:https://www.cnblogs.com/hejh/p/11023635.html
Copyright © 2011-2022 走看看