JSP学习

JSP学习

什么是JSP

Java Server Pages :Java服务器端页面,和servlet一样,用于开发动态web技术!

最大的特点:

  • 写JSP就像写Html
  • 区别:
    • Html只给用户提供静态的数据,JavaScript也是伪动态,无法与服务器互动
    • JSP页面可以嵌入Java代码,为用户提供动态数据;

JSP原理

思路:JSP如何执行的!

  • 代码层面没有问题

  • 服务器内部工作

    Tomcat中有一个work目录

    在IDEA中使用Tomcat会在IDEA中生成一个work目录

在这里插入图片描述

我的电脑的地址:

C:\Users\Cheng\.IntelliJIdea2018.2\system\tomcat\未命名_javaweb-01-maven\work\Catalina\localhost\ROOT\org\apache\jsp

发现,index页面转变称为了Java程序!

在这里插入图片描述

浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet

JSP最终也会被转变成为一个Java类!
JSP本质上就是一个Servlet

//初始化
  public void _jspInit() {
  }
//销毁
  public void _jspDestroy() {
  }
//JSPService
  public void _jspService(HttpServletRequest request, HttpServletResponse response) {
  }
  1. 判断请求

  2. 内置一些对象

        final javax.servlet.jsp.PageContext pageContext;		//页面上下文
        javax.servlet.http.HttpSession session = null;			//session
        final javax.servlet.ServletContext application;			//applicationContext
        final javax.servlet.ServletConfig config;				//config配置
        javax.servlet.jsp.JspWriter out = null;					//out输出对象
        final java.lang.Object page = this;						//page:当前页面
    	HttpServletRequest request								//请求
    	HttpServletResponse response							//响应
    
  3. 输出页面前增加的代码:

          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;
    
  4. 以上的这些个对象,我们可以在JSP页面中直接使用!

在这里插入图片描述

在JSP页面中:
只要是Java代码就会原封不动的输出;

如果是Html代码,就会被转译成:

out.write("<html>\n");

如:

<html>
<body>
<h2>Hello World!</h2>

<%
    String name = "ch1";		// JSP页面中可以在<% %>写Java代码
%>

name:<%=name%>				    // <%=xxxx%>可以取值

</body>
</html>

在这里插入图片描述

JSP基础语法

任何语言都有自己的语法。JSP作为一种Java技术的应用,它拥有一些自己扩充的语法(了解即可),Java语法都支持。

JSP表达式

    <%--JSP表达式
    作用:将程序的结果输出到客户端
    <%= 变量或者表达式%>
    --%>
    <%= new java.util.Date()%>

JSP脚本片段

<%--JSP脚本片段--%>
<%
int sum =0;
   for (int i = 1; i < 100; i++) {
       sum+=i;
   }
   out.println("<h1>sum="+sum+"</h1>");
%>

脚本片段的再实现

<%--脚本片段的再实现--%>
<%
int x = 10;
out.println(x);
%>
<p>这是一个JSP文档</p>
<%
    int y = 20;
    out.println(y);
%>
HTML语言的嵌套
<%--HTML嵌套--%>
<%
    for (int i = 0; i < 5; i++) {
%>
<h1>hello,ch1  <%=i%></h1>
<%
    }
%>

JSP声明

<%--JSP声明--%>
<%!
static {
    System.out.println("Loading Servlet!");
}
private int globalVar = 0;
static void ch1(){
    System.out.println("进入了方法ch1!");
}
%>

JSP声明:会被编译到JSP生成的Java的类中!脚本和脚本片段会被生成到_jspService方法中!

EL表达式

<%  for (int i = 0; i < 5; i++) {   %>
<h1>hello,ch1 ${i}></h1>
<% } %>
<%%>
<%=%>
<%!%>

<%--注释--%>

JSP的注释,不会在客户端显示,HTML就会!

JSP指令

错误页面声明:

<%--格式--%>
<%@page ..... %>
<%@page errorPage="error/500.jsp" %>
<%@page pageEncoding="UTF-8" %>

声明页面错误,定制页面错误信息

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--定制错误页面--%>
<%@page errorPage="error/500.jsp" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
int x = 4/0;
%>
</body>
</html>

500错误信息定制:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<img src="../image/500.png" alt="">
</body>
</html>

404错误信息定制:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<img src="../image/404.png" alt="">
</body>
</html>

在web.xml中配置error错误:

    <error-page>
        <error-code>404</error-code>
        <location>/error/404.jsp</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/error/500.jsp</location>
    </error-page>

网页头部尾部配置:

头部

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<h1>我是Header</h1>

尾部:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<h1>我是Footer</h1>

网页调用:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%@include file="common/header.jsp" %>
<h1>网页主体</h1>
<%@include file="common/footer.jsp" %>
</body>
</html>

在这里插入图片描述

九大内置对象

  • PageContext 存东西
  • Request 存东西
  • Response
  • Session 存东西
  • Application(ServletContext) 存东西
  • Config(ServletConfig)
  • out
  • page
  • exception
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<%--内置对象--%>
<%
    pageContext.setAttribute("name01","ch1");//保存的数据只在当前页面中有效
    request.setAttribute("name02","ch2");    //保存的数据只在一次请求中有效,请求转发会携带这个数据
    session.setAttribute("name03","ch3");    //保存的数据在一次会话中有效,从打开浏览器到关闭浏览器
    application.setAttribute("name04","ch4");//保存的数据在服务器中有效,从打开服务器到关闭服务器
%>

<%
    //通过pageContext取出我们保存的值,通过寻找方式来取
    //从底层到高层找(作用域)
    String name01 =(String) pageContext.findAttribute("name01");
    String name02 =(String) pageContext.findAttribute("name02");
    String name03 =(String) pageContext.findAttribute("name03");
    String name04 =(String) pageContext.findAttribute("name04");

%>

<%--使用EL表达式输出最快  ${}   --%>

<h1>取出的值为:</h1>
<h3>${name01}</h3>
<h3>${name02}</h3>
<h3>${name03}</h3>
<h3>${name04}</h3>


</body>
</html>

在这里插入图片描述

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

    <!-- JSTL表达式 依赖 -->
    <dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>jstl-api</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- standard标签库 -->
    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>

使用时需要导入包

EL表达式: ${ }

  • 获取数据
  • 执行运算
  • 获取web开发的常用对象

JSP表达式:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<h1>转发页面</h1>
<jsp:forward page="jsptag2.jsp">			//转发页面
    <jsp:param name="name" value="ch1"/>	//转发过程中携带参数
    <jsp:param name="age" value="21"/>
</jsp:forward>
</body>
</html>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h2>2</h2>	
名字:<%=request.getParameter("name")%>	//取出参数
年龄:<%=request.getParameter("age")%>
</body>
</html>

JSTL表达式:

格式化标签

SQL标签

XML 标签

核心标签

使用时,必须先导入包

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

同时,Tomcat也需要导入JSTL包!

JavaBean

实体类

JavaBean有特定的写法

  • 必须要有一个无参构造
  • 属性必须私有化
  • 必须有对应的get/set方法

一般用来和数据库的字段作映射 ORM;

ORM:对象关系映射

  • 表---->类
  • 字段---->属性
  • 行记录---->对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值