JSP基础

简介

  1. jsp(java server pages)
    是服务器端页面,在原有html基础上添加java脚本 ,构成jsp页面

  2. jsp和Servlet的分工
    jsp:作为请求发起页面,例如显示表单、超链接;作为请求结束页面,例如显示数据
    Servlet:作为请求中处理数据的环节

  3. jsp的组成
    jsp=html+java脚本+jsp标签(指令)
    jsp中无需创建即可使用的对象共有9个,被称为9大内置对象,例如request对象、out对象
    3中java脚本:
    <%…%>:java代码片段(常用),用于定义0-N条java语句
    <%=…%>:java表达式,用于输出(常用),用于输出一条表达式(或变量)的结果
    <%!..%>:声明,用来创建类的成员变量和成员方法(基本不用,但容易被考到)

  4. jsp和Servlet分工案例
    form.jsp:

<body>
    <form action="/day11_1/AServlet" method="post">
  		整数1:<input type="text" name="num1"/><br/>
  		整数2:<input type="text" name="num2"/><br/>
  		<input type="submit" value="提交"/>
  	</form>
  </body>

AServlet:

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//获取参数
		String s1=request.getParameter("num1");
		String s2=request.getParameter("num2");
		//转换成int类型
		int num1=Integer.parseInt(s1);
		int num2=Integer.parseInt(s2);
		//运算
		int sum=num1+num2;
		//把结果保存到request域中
		request.setAttribute("result", sum);
		//转发到result.jsp
		request.getRequestDispatcher("/add/result.jsp").forward(request, response);
	}

result.jsp:

<body>
  	<%
  		Integer result=(Integer)request.getAttribute("result");
  	%>
  	<%=result %>
  </body>

jsp原理

其实jsp是一种特殊的Servlet,当jsp页面第一次被访问时,服务器会把jsp文件编译成java文件(这个java其实是一个Servlet类),然后再编译成.class,然后创建该类对象,最后调用它的service()方法,第二次请求同一jsp时,直接调用service()方法

jsp的注释

<%--...--%>:当服务器把jsp编译成java文件时已经忽略了注释部分

JSP指令

JSP指令概述:
JSP指令的格式:<%@指令名 attr1="" attr2=""%>,一般都会把JSP指令放到JSP文件的最上方,但这不是必须的
JSP中有三大指令:page、include、taglib,其中最常用最复杂的就是page指令

page指令

一些属性:

  1. pageEncoding
    指定当前jsp页面的编码

  2. contentType
    表示添加一个响应头Content-Type
    如果两个属性只提供一个,那么另一个的默认值也为设置的那一个;如果两个属性都没有设置,那么默认iso

  3. import
    如:<%@page import="java.util.*,java.net.*,java.sql.*"%>。import属性是唯一可以重复重现的属性,但一般使用多个page指令导入多个包

  4. errorPage
    当前页面如果抛出异常,那么要转发到哪一个页面,由errorPage来指定

  5. isErrorPage
    它指定当前页面是否为处理错误的页面。当该属性值为true时,这个页面会设置状态码为500,而且这个页面可以使用9大内置对象中的exception

  6. autoFlush
    指定jsp的输出流缓冲区满时,是否自动刷新。默认为true,如果为false,那么在缓冲区满时抛出异常

  7. buffer
    指定缓冲区大小,默认为8kb,通常不需要修改

  8. isELIgnore
    是否忽略EL表达式,默认为false,不忽略,即支持

include(静态包含)和taglib(导入标签库)
  1. include:jsp页面中一部分内容可能会被独立出去形成单独的jsp页面。在使用时可以用静态包含组合进来
  2. taglib
    两个属性:
  • perfix:指定标签库在本页面中的前缀,由我们自己来起名称
  • uri:指定标签库的位置

JSP九个内置对象

out、page、config、pageContext、request、response、exception、session、application
out:jsp的输出流,用来向客户端响应
page:当前jsp对象,它的引用类型是Object,即真身中有如下代码:Object page=this;
config:它对应真身中的ServletConfig对象
pageContext:一个顶9个
request:HttpServletRequest
response:HttpServletResponse
exception:Throwable
session:HTTPSession
application:ServletContext

pageContext
  1. Servlet中有三大域,JSP中有四大域,它就是最后一个域对象
    ServletContext:整个应用程序
    session:整个会话,一个会话中只有一个用户
    request:一个请求链
    pageContext:一个jsp页面。这个域是在当前jsp页面和当前jsp页面中使用的标签之间共享数据

  2. pageContext

  • 可获取其它8个内置对象
  • 可代理其它域
  • 全域查找:pageContext.findAttribute("xxx");,从小到大,依次查找

JSP动作标签

jsp的动作标签与html提供的标签有本质的区别。动作标签由Tomcat(服务器)来解释执行,html标签由浏览器来执行

  1. <jsp:forward>:转发。它与RequestDispatcher的forward方法是一样的,一个是在Servlet中使用,一个是在jsp中使用

  2. <jsp:include>:包含。它与RequestDispatcher的include方法是一样的,一个是在Servlet中使用,一个是在jsp中使用

JavaBean

JavaBean的规范:

  • 必须要有一个默认构造器
  • 提供get/set方法,如果只有get方法,那么这个属性是只读属性

jsp中与JavaBean相关的标签

<jsp:useBean>:创建过查询bean
<jsp:setProperty>:设置JavaBean的属性的值
<jsp:getProperty>:获取JavaBean的属性的值

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值