ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JSP

2021-01-28 20:32:41  阅读:165  来源: 互联网

标签:标签 javax JSP jsp servlet pageContext


JSP

  • Java Server Pages

JSP原理

  • 在页面中嵌入Java代码,为用户提供动态数据
  • JSP最终也会转换成为一个Java类,本质上就是一个Servlet
  • 内置方法:
public void _jspInit();//初始化
public void _jspDestroy();//销毁
public void _jspService(request,response);//JSPService
  • 内置对象:
final javax.servlet.jsp.PageContext pageContext; //页面上下文
javax.servlet.http.HttpSession session = null; //Session
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
HttpServletRequest request; //请求
HTTPServletResponse response; //响应
  • 输出页面前增加的代码:
response.setContentType("text/html"); //设置响应的页面类型
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;
  • 以上对象可以在JSP页面中直接使用
  • Java代码原封不动,HTML转换为out.write()

JSP基础语法

  • 分别导入Servlet,JSP,JSTL表达式,standard标签库的maven依赖
<dependencies>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
        <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api -->
    <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>jstl-api</artifactId>
        <version>1.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/taglibs/standard -->
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>
</dependencies>
  • 注释:<%--xxx--%>

  • JSP表达式:<%=变量或表达式%>,将程序的结果输出到客户端

    • EL表达式:${变量或表达式}
  • JSP脚本片段:<% Java代码,可以使用JSP内置对象 %>

  • JSP声明:<%! service方法外的类中的代码 %>

JSP指令

  • jsp文件开头加上:<%@ page...%>,设置页面参数,导入java包等
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page @improt... %>
  • 设置错误页面

    • <%@ page isErrorPage="true" %>
      
    • <error-page>
          <error-code>404</error-code>
          <location>/error/404.jsp</location>
      </error-page>
      
  • 通用页面:header、footer等,通过include导入

    • <%@include file="common/header.jsp"%> <%--将两个页面合二为一,直接是out.write()--%>
      <jsp:include page="/commen/footer.jsp"/> <%--通过java方法拼接页面,内外变量互不影响--%>
      

九大内置对象

  • PageContext
  • Request
  • Response
  • Session
  • Application:ServletContext
  • config:ServletConfig
  • out
  • page
  • exception

作用域

  • setAttribute("name", "value"),不同对象作用域不同

    • pageContext:保存的数据只在一个页面中有效
    • request:保存的数据只在一次请求中有效,请求转发会携带这个数据
    • session:保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
    • application:保存的数据只在服务器中有效,从打开服务器到关闭服务器
  • pageContext.findAttribute("name"):作用域从底层到高层寻找

    • page->request->session->application
  • pageContext.setAttribute("name", "value", scope):

    • scope:PAGE_SCOPE=1,REQUEST_SCOPE=2,SESSION_SCOPE=3,APPLICATION_SCOPE=4

页面跳转

  • pageContext.forward("/index.jsp"):地址栏不会变(只要不是重定向,地址栏都不变)
    • 等同于request.getRequestDispatcher("/index.jsp").forward(request, response)

JSP标签、JSTL标签、EL表达式

EL表达式

  • Expression Language
  • 作用:获取数据、执行运算、获取web开发的常用对象、调用java方法
    • 获取表单中的数据:${param.参数名}
  • 形式:${}

JSP标签

  • <jsp:include page="index.jsp"></jsp:include>
    
  • <jsp:forward page="index.jsp">
    	<jsp:param name="key1" value="value1"/>
        <jsp:param name="key2" value="value2"/>
    </jsp:forward>
    
    • 通过<%=request.getParameter("key")>取参数

JSTL标签

  • 为了HTML标签的补足,自定义了许多标签,标签的功能和Java代码一样

  • 核心标签、格式化标签、SQL标签、XML标签

核心标签

  • 引用方式:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • <c:out>:等同于<%=...>
  • <c:set>:用于保存数据
  • <c:remove>:用于删除数据
  • <c:if>:与if相同
  • <c:choose><c:when><c:otherwise>:与switch相同
  • <c:forEach>:迭代
  • <c:url>:创造url

标签:标签,javax,JSP,jsp,servlet,pageContext
来源: https://www.cnblogs.com/xiafrog/p/14341830.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有