zoukankan      html  css  js  c++  java
  • Java 动态页面技术 之 jsp

    动态页面技术(JSP/EL/JSTL

    php,asp(.net):html中嵌套响应语言    java不行

    servlet技术:在java代码中嵌套html  response.getWriter().write("<html>");

    jsp技术:在html中嵌套java代码,擅长写html代码  本质是servlet

    JSP技术

    jsp在创建/修改后第一次被访问时会被Web容器翻译成servlet,再执行

    第一次访问---->helloServlet.jsp--(jsp后缀的运行JspServlet生成)

    -->helloServlet_jsp.java(在Tomcatwork目录中)---->编译运行

    <html代码> 翻译到service方法内out.write("<html>");

    <%java代码%> 翻译到service方法内 不能写方法

    <%=java变量或表达式> 翻译到service方法内 out.print() 输出到前端  

    <%!java代码%> 翻译成servlet的成员变量/方法

    Html注释 <!--注释-->   jsp源码、翻译后的servlethtml源码

    java注释 //单行  /*多行*/ jsp源码、翻译后的servlet

    jsp注释 <%--注释--%> jsp源码

    jsp指令

    1page指令 当前页面的信息(实际开发中默认)

    <%@ page language="java" contentType="text/html; charset=UTF-8"

        pageEncoding="UTF-8"%>

    language jsp脚本的嵌入语言

    pageEncoding :当前jsp文件编码(它包含contentType)

    contentType :翻译成response.setContentType(text/html;charset=UTF-8)

    session :翻译时自动创建session  默认=true

    import :导入java的包  写类名+Alt+/

    errorPage :当前页面出错(500)后跳转到哪个页面  =http://...  

    isErrorPage :出错后跳转的页面设置 =true

    WEB项目访问报错 跳转 设置web.xml   errorPage优先于web.xml的设置

    <error-page>

    <error-code>404</error-code>

    <location>/error.jsp</location>

    </error-page>

    <error-page>

    <error-code>500</error-code>

    <location>/error.jsp</location>

    </error-page>

    2include指令 包含其他页面(静态包含:写入同一个servlet

    <body>

    <%@ include file=""/header.jsp""%>header.jsp页面嵌入页面中

    这是正文

    </body>

    3taglib指令 引入标签库(jstl标签库、struts2标签库)

    格式:<%@ taglib uri="标签库地址" prefix="前缀"%>

     

    jsp动作标签

    页面包含:<jsp:include page="被包含的页面"/>

    (动态包含 翻译成两个servlet 运行时引入)

    请求转发:<jsp:forward page="要转发的资源" />

    跳转/包含页面指定参数:<jsp:param name=" "  value=" ">

     

    jsp内置/隐式对象

    jsp被翻译成servlet后,service方法中有9个对象定义并初始化,

    可以在jsp文件中直接使用

    名称    类型                描述

    out    javax.servlet.jsp.JspWriter       用于页面输出  字符流

    request  javax.servlet.http.HttpServletRequest  客户端请求信息

    response   javax.servlet.http.HttpServletResponse 服务端响应信息

    config  javax.servlet.ServletConfig         服务器配置,获取初始化参数  init()方法中

    session  javax.servlet.http.HttpSession       客户端会话信息

    application  javax.servlet.ServletContext       WEB项目信息

    page    java.lang.Object          当前页面转换后的Servlet类的实例(类似this

    pageContext   javax.servlet.jsp.PageContext       JSP的页面容器

    exception   java.lang.Throwable      JSP页面的异常,在错误跳转页中才有 存储错误信息

     

    (1)out对象 字符缓冲流 向客户端输出内容----out.write()

    out缓冲区数据 要先刷到response缓冲区 再 被Tomcat获取内容

    <%@ page buffer="8kb"> out缓冲区大小 默认8kb

    buffer="0kb" 关闭out缓冲区 内容直接写到respons缓冲器

     

    (2)pageContext域对象 jsp页面的上下文对象

    pageContext.setAttribute(String name,Object obj) //page

    pageContext.setAttribute(String name,Object obj,int scope)//(, , )

    request域: pageContext.REQUEST_SCOPE

    session域: pageContext.SESSION_SCOPE

    application域: pageContext.APPLICATION_SCOPE

    pageContext.getAttribute(String name)

    pageContext.getAttribute(String name,int scope)

    pageContext.removeAttrbute(String name)

    pageContext.removeAttrbute(String name,int scope)

    <%

    //request.setAttribute("name", "zhangsan");

    pageContext.setAttribute("name", "lisi",pageContext.REQUEST_SCOPE);

    String name=

    (String)pageContext.getAttribute("name", pageContext.REQUEST_SCOPE);

    %>

    pageContext.findAttribute(String name)//从域(范围由小到大)中找

    <%=pageContext.findAttribute("name")%

     

    域范围(由小到大)page<request<session<application

    page :当前jsp页面

    request :一次请求

    session :一次会话

    application :整个web应用

    pageContext可获得其他8大隐式对象   方法传参时只需要传pageContext

    pageContext.getRequest() pageContext.getSession()

     

  • 相关阅读:
    Django: 获取头信息
    好用工具:火狐浏览器的境内境外版本区分
    Django: request.GET.get()
    es6: 展开运算符
    Vue: 配置axios基准路径并使用
    js: 获取Blob的值
    ApiPost: Error:ESOCKETTIMEDOUT
    Vue错误:Cannot read properties of undefined (reading '$router')
    git报错:error: Your local changes to the following files would be overwritten by checkout:
    Django: request.query_params取值
  • 原文地址:https://www.cnblogs.com/javscr/p/10286016.html
Copyright © 2011-2022 走看看