javaWeb_JSP
一、简介
全称: java server pages(java服务器页面);
jsp必须运行在服务器中,不能直接使用浏览器打开;
Jsp其本质就是一个Servle,Servle能做的事情JSP都能做。
Jsp能够以HTML页面的方式呈现数据,是一个可以嵌入Java代码的HTML。(jsp = html + java);
(Servlet主要负责处理业务,从表面上看,Servlet相当于在java中嵌入html代码:Servlet=java+html)
二、JSP工作原理
1、第一次访问jsp页面时,服务器会将xxx.jsp文件翻译成xxx_jsp.java文件,再编译成xxx_jsp.class文件。
2、以后在访问同一个jsp文件
如果文件未改变,不会被翻译和编译
如果文件改变,会翻译和编译
注意事项:1.jsp页面是一个类似于html的一个页面,jsp直接存放到WebContent目录下,和html一样访问jsp的时候,也和访问html一样
2.jsp的默认编码集是iso-8859-1,修改jsp的默认编码为UTF-8;
三、Jsp基本语法(6个)
1、 指令
格式:<%@ 指令名 属性=属性值 属性2=属性值2%>
2、 模板元素(<u>html&css&js</u>...)
3、 脚本片段
格式:<% %>作用:在_jspService()方法中,书写java代码。
4、 表达式
格式:<%= %>作用:将数据显示到页面中,类似PrintWrite的writer()的功能。注:PrintWriter与JspWriter都继承java.io.Writer,属于兄弟关系,同时出现时PrintWriter的内容始终先显示。
5、 声明
格式:<%! %> 作用:在翻译后的类中,书写java代码。(如果声明变量则是成员变量)
6、 注释
java中的单行注释和多行注册html注释:<!-- -->jsp注释:<%-- --%>
四、Jsp中常用指令
1、page指令
格式:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF8"%>属性:language:jsp支持语言,有且仅有java。contentType:与response.setContentType()作用一致pageEncoding:设置当前jsp页面的字符集import:导包isErrorPage:设置当前页面是否为错误页面,默认值"false"。errorPage:设置当前页面错误时的跳转目标页面。错误需要在_jspService()中才可以捕获。
2、include指令:静态包含
格式:<%@include file="被包含文件的路径" %>作用:将目标文件包含到当前文件中特点:被包含的文件不会被翻译&编译。(先包含,再翻译)
3、taglib(标签库)指令---引入标签库(jstl的使用)
<%@taglibprefix="c"uri=""http://java.sun.com/jsp/jstl/core""%>
属性:prefix ----指定前缀名,通过该名来使用jstl;
uri-----相当于库的唯一标识,因为JSTL由多个不同的库组成,使用该属性指定要导入哪个库;
作用:引入标签库
五、Jsp中常用动作标签
1、转发
语法:<jsp:forward><jsp:forword>
实例
<jsp:forwardpage="target.jsp"></jsp:forward>
作用:在页面中进行转发操作
转发子标签
语法::<jsp:param value="paramValue" name="paramName"/>
作用 :在转发时设置请求参数,通过request.getParameter()在目标页面获取请求参数。
<jsp:forwardpage="target.jsp">
<jsp:paramvalue="paramValue"name="paramName"/>
</jsp:forward>
注意:如果转发动作标签不需要设置请求参数,该标签开始与结束标签内部,不允许书写任何内容,(包括空格)
2、动态包含
语法:<jsp:include page="target.jsp"> 作用:将目标文件包含到当前文件中。特点:被包含的文件同时会被翻译&编译。(先翻译,再包含)
3.jsp动态包含和静态包含的区别
静态包含------>@include 指令动态包含------>jsp:include标签
语法<%@ include file="taret.jsp"%><jsp:include page="target">
包含动作发生时机翻译期间请求期间
是否生成.java文件不生成生成
合并方式代码复制(多个jsp中相同代码抽取到一个文件中)合并运行结果
适用范围适用包含纯静态内容(CSS,HTML,JS),或没有非常耗时操作;或大量java代码的jsp。包含需要传递参数。含有大量java代码,运算,耗时很长的操作。
六、Jsp九大隐含对象(内置对象|隐式对象)
注:九大内置对象,都是我们可以在【代码脚本】中或【表达式脚本】中直接使用的对象。
概述: JSP隐式对象是JSP容器为每个JSP页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量。
1、pageContext(页面域)
类型:java.servlet.jsp.PageContext定义:代表整个jsp页面作用:①页面域对象 ②九大隐式对象的“大哥”,可以直接调用其他八个隐式对象。在servlet中的获取方式:无
2、request(请求域)
类型:HttpServletRequest定义:代表浏览器向服务器发送的请求报文作用: 1.获取请求参数 2.获取URL信息 3.获取请求头信息 4.转发请求(地址栏不变) 5.域对象在servlet中的获取方式:在doGet()/doPost()中直接调用
3、session(会话域)
类型:HttpSession定义:代表浏览器与服务器之间的会话作用域:当前会话有效(关闭浏览器结束当前会话)在servlet中的获取方式:request.getSession();
4、application(web域)
类型:javax.servlet.ServletContext定义:意思是Servlet上下文,代表当前web应用。作用: 1.获取当前项目的虚拟路径; 2.获取虚拟路径所映射的真实路径; 3.获取当前上下文的初始化参数; 4.域对象;在servlet中的获取方式:this.getServletContext();
5、page
类型:Object作用:this
6、response
类型:HttpServletResponse定义:代表服务器向浏览器发送的响应报文作用:1.获取响应流(writer),响应数据到浏览器页面;2.设置响应头;3.重定向;在servlet中的获取方式:在doGet()或doPost()中直接使用
7、config
类型:javax.servlet.ServletConfig 定义:代表当前Servlet配置信息作用:1.获取当前Servlet的名称;2.获取当前Servlet初始化参数3.获取ServletContext对象在servlet中的获取方式:this.getServletConfig();
8、out
类型:javax.servlet.jsp.JspWriter作用:与Servlet中的PrintWriter类似,向页面响应数据。在servlet中的获取方式:无
9、exception
类型:java.lang.Throwable作用:处理异常
七、Jsp四大域对象
1、作用: 程序中的域对象,在一定范围内共享数据。
2、四大域对象
2.1 pageContext:页面域对象作用域:当前页面效,超出当前页面失效。 2.2 request:请求域对象作用域:当前请求中效,超出当前请求失效。
注:当前请求不包含重定向和超链接
2.3 session:会话域对象(与浏览器有关,与服务器无关) 作用域:当前会话效,超出当前会话失效。 2.4 application: web域对象 作用域:当前web应用中效,关闭或卸载web应用失效。
3、 域对象的共同方法
每个域对象内部都维护了一个Map<String , Object>设置属性到域中:void setAttribute(String key , Object value);从域中获取指定的属性:Object getAttribute(String key);移除域中指定属性:void removeAttribute(String key);注:使用域对象的心得:能用小域就不用大域。
4、四大域对象作用域总结
域对象作用域范围起始时间结束时间
pageContext当前jsp页面页面加载关闭页面无
request同一个请求收到请求(转发、点击链接请求)响应请求通过doget();dopost直接使用
session同一个会话开始会话(主要跟浏览器有关)结束会话request.getSession();
application当前Web应用web应用卸载web应用卸载this.getServletContext();
网友评论