JSP学习笔记(1)——Jsp指令、动作元素和内置对象
简单来说,javaweb技术就是让服务器端能够执行Java代码,之后返回数据给客户端(浏览器)让客户端显示数据
jsp页面中可以嵌套java代码(java小脚本)和嵌套Web前端(html,css,js)来显示数据。
服务器解析一个jsp,其实就是把jsp中的java代码编译并执行,之后再返回一个String,String包含着html等Web前端数据,浏览器(客户端)就可以像平常打开静态网页一样,接受静态网页数据(html),解析并显示给用户。
- 指令 <%@ %>
- 脚本 <% %>
- 声明 <%! %>
- 表达式 <%= %>
- 注释 <%-- --%> 服务器端才能看见,客户端看不见
<%
//这里面可以写java代码
%>
<%!
//这里面只能写变量申明,不能写java代码
%>
//一般这里与html标签联用,输出数据
<%= %>
指令:
page指令
page指令,主要用于jsp页面的设置
| 属性 | 描述 |
|---|---|
| contentType | 编码(设置为UTF-8,防止中文出现乱码显示) |
| language | 定义语言(java) |
| ErrorPage="xx.jsp" | 当前页面出现异常,跳转到处理异常的jsp页面 |
| isErrorPage="true" | true,即为当前的页面是处理错误的页面,可以使用隐式对象获取到信息excetion.getMessage() |
下面的代码,就是index.jsp页面出现错误之后,就会跳转到处理异常的界面catch_error.jsp
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="catch_error.jsp" %>
<html>
<head>
<title>fitsr jsp</title>
</head>
<body>
<%
int a=10;
int result = a/0;
out.write("<h1>"+result+"</h1>");
%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
<title>处理异常</title>
</head>
<body>
<%
String message = exception.getMessage();
out.write("<h1>错误信息:" + message + "</h1>");
%>
</body>
</html>
include指令
包含其他文件,如引入一个jsp页面或者是html页面
target指令
用来引入标签库的定义(JSTL标签),后面补充。
Jsp动作元素(Jsp行为)
说明
本质上,就是定义的一些函数。
JSP行为标签使用XML语法结构来控制servlet引擎。它能够动态插入一个文件,重用JavaBean组件,引导用户去另一个页面,为Java插件产生相关的HTML等等.
格式
<jsp:action_name attribute="value" />
常用
| 语法 | 描述 |
|---|---|
| jsp:include | 用于在当前页面中包含静态或动态资源 |
| jsp:useBean | 寻找和初始化一个JavaBean组件 |
| jsp:setProperty | 设置 JavaBean组件的值 |
| jsp:getProperty | 将 JavaBean组件的值插入到 output中 |
| jsp:forward | 从一个JSP文件向另一个文件传递一个包含用户请求的request对象 |
| jsp:plugin | 用于在生成的HTML页面中包含Applet和JavaBean对象 |
| jsp:element | 动态创建一个XML元素 |
| jsp:attribute | 定义动态创建的XML元素的属性 |
| jsp:body | 定义动态创建的XML元素的主体 |
| jsp:text | 用于封装模板数据 |
jsp:userBean
创建一个Bean实例,如果存在就不会创建
<jsp:userBean id="" class="" scope="">
</jsp:userBean>
之后可以在java脚本中,使用定义的bean,id就是变量名
<jsp:setProperty name="" property="" value="" >
</jsp:setProperty>
name是变量名(上面jsp:userBean标签的id),value中的数值会自动转型为属性对应的类型
<!-- 相当于请求转发 -->
<jsp:forword page="">
</jsp:forword>
<!-- 传参-->
<jsp:forword page="">
<jsp:param name="" value=""/>
</jsp:forword>
jsp:include 和指令<% @include 的区别
指令<% @include 的jsp页面不会被单独的转译成java文件和编译成class文件,不允许存在相同的变量
jsp:include 的jsp页面会被单独地转译成java文件和编译成class文件,允许存在相同的变量
内置对象(隐式对象)
九大隐式对象
| 对象 | 描述 |
|---|---|
| request | HttpServletRequest类的实例 |
| response | HttpServletResponse类的实例 |
| out | PrintWriter类的实例,用于把结果输出至网页上 |
| session | HttpSession类的实例 |
| application | ServletContext类的实例,与应用上下文有关 |
| config | ServletConfig类的实例 |
| pageContext | PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问 |
| page | 类似于Java类中的this关键字 |
| Exception | Exception类的对象,代表发生错误的JSP页面中对应的异常对象 |
这里面九大隐式对象,常用的就是前四个。可以直接在JSP中的脚本,声明和表达式中使用(<% %> <%= %>)
request对象
(浏览器)客户端发出请求,就会创建一个request对象
request对象是javax.servlet.http.HttpServletRequest 类的实例
每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。
request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。
rquest还可以获得表单提交之后传来的参数值
//获得表单中的name="username"的标签内容
String name = request.getParameter("username");
//设置编码,防止出现中文乱码
request.setCharacterEncoding("utf-8");
response对象
response对象是javax.servlet.http.HttpServletResponse类的实例。
当服务器创建request对象时会同时创建用于响应这个客户端的response对象。
response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。
out对象
out对象是 javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容或者是当前页面直接输出内容
某个jsp文件,下面的代码就是表示该jsp文件打开之后,浏览器会显示hello world
<%
out.print("hello world");
//输出一级标题
out.print("<h1>hello</h1>");
//实现换行
out.print("hello<br>");
%>
虽然有println方法,但是换行在输出后面使用<br>标签
服务端可以使用out对象的write或者是print方法,向客户端返回数据
session对象
每当创建一个会话(即浏览器访问当前网站,不关闭浏览器就是一个会话),就会产生一个session对象
一般存放用户登录信息,重定向之后的session存放的数据不会丢失
web.xml中设置session的有效时长,默认是30分钟
<session-config>
<timeout>单位为9分钟
</session-config>
//session过期,就会新建,否则,就返回存在的session
getSenssion(true)
作用域
pageContext,request,session,application都可以通过setAttribute和getAttribute方法来存放和取出数据
pageContetxt表示数据只能存放在当前页面,打开了新页面就无法获得之前存放的数据
request比pageContext的范围稍大一些,可以在新页面获取之前的存放的数据,不过,只能是请求转发的新页面才能获得。
session和application范围较大,存放的数据几乎全部页面都可以取出来。
request.setAttribute("user",user);
Object o = request.getAttribute("user");//取出来需要强制转型
JSP学习笔记(1)——Jsp指令、动作元素和内置对象的更多相关文章
- JavaWeb学习笔记--2.jsp指令元素、动作元素、内置对象
目录: 一.指令 1.1 page指令 :page指令有13种属性 1.2 include指令:include指令有1种属性,为file.(注意<%@ include%>和<jsp: ...
- JavaScript学习笔记 - 进阶篇(6)- JavaScript内置对象
什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法: ...
- JAVAWEB开发之Session的追踪创建和销毁、JSP具体解释(指令,标签,内置对象,动作即转发和包括)、JavaBean及内省技术以及EL表达式获取内容的使用
Session的追踪技术 已知Session是利用cookie机制的server端技术.当client第一次訪问资源时 假设调用request.getSession() 就会在server端创建一个由 ...
- 二、JSP的3个编译指令,7个动作指令,9个内置对象
JSP 3个编译指令 1) page指令(基本不需要用到,使用默认即可) 主要属性: 1.Language:指定脚本所采用的语言类型,现在只支持java 2.Extends:定义当前jsp产生的se ...
- JSP基本的语法、3个编译指令、7个动作指令、9个内置对象
一.jsp概述 JSP是java server page的缩写,其本质是一个简化的servlet,是一种动态网页技术标准.jsp页面是在HTML页面中嵌入java程序段.使用jsp开发的应用程序能够跨 ...
- JSP学习 三大指令、九个内置对象、JavaBean、EL表达式
1.page-->最复杂:<%@page language="java" info="xxx"...%> * pageEncoding和con ...
- jsp页面元素和内置对象
java server pages其根本是一个简化的servlet设计.实现了在java当中使用html标签.javaEE标准 一.页面元素 1.静态内容 html.js.css相关标签元素. 2.指 ...
- JSP三个指令及9个内置对象
注:本文编写方便自己以后用到时查阅 三大指令:include. page.taglib include指令: 作用: 在当前页面用于包含其他页面 语法: <%@include file=&qu ...
- JSP(二)----指令,注释,内置对象
## JSP 1.指令 * 作用:用于配置JSP页面,导入资源文件 * 格式: <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 %> <%@ page con ...
随机推荐
- asp.net core 系列之静态文件
这篇讲解asp.net core中的静态文件(大致翻译于官网). 静态文件,例如HTML,CSS, images和JavaScript. 要想直接被客户端访问,需要做一些配置. 一.Serve sta ...
- 將Python打包成 exe可执行文件
利用Python寫了一個小腳本想要傳給使用Windows但沒有裝Python的朋友執行,這時候就可以利用將檔案包裝成exe檔案,讓沒有Python的朋友也可以執行.本篇將介紹利用套件「PyInstal ...
- JS制作简易的考试答题管理系统
答题卡系统: 网站运行效果 代码区域: HTML 代码: <style type="text/css"> body { font-size: 30px; backgro ...
- handlerAdapter与方法调用(参数的解析)
前提:当找到handler以后,那么就要让handler发挥作用,这个时候handlerAdapter就派上用场了 这里面比较复杂就是requestMappingHandlerAdapter了,其他的 ...
- jumpserver1.4.1 安装过程
# 修改字符集 localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 export LC_ALL=zh_CN.UTF-8 echo 'LANG="zh_CN. ...
- poj 1455 Crazy tea party
这道题第一眼看去很难,其实不然,短短几行代码就搞定了. 说一下大概思路,如果是排成一排的n个人,如 1 2 3 4 5 6 7 8 我们要变成 8 7 6 5 4 3 2 1 需要交换 28次,找规律 ...
- coffeescript 函数 箭头表达式
函数 do可以形成闭包,使方法作用域不受外部变化的影响. 隐式返回最后一个表达式的值 函数调用省略括号 用arguments数组访问传递给函数的所有对象(低可读性) @name为this.name的简 ...
- linux文本编辑vim命令
1.Vim Vim 是一个功能强大的全屏幕文本编辑器,是 Linux/UNIX 上最常用的文本编辑器,它的作用是建立.编辑.显示文本文件. Vim 没有菜单,只有命令 2.Vim 工作模式 3.插入 ...
- CSS3 filter 模糊滤镜的应用
CSS3 filter 模糊滤镜的应用 在segmentfault上回答过的一个问题,如何将网页CSS背景图高斯模糊且全屏显示当时没有深入了解,只觉得滤镜应该只是应用于图片上的.而且各大网站的de ...
- Hadoop学习(9)-spark的安装与简单使用
spark和mapreduce差不多,都是一种计算引擎,spark相对于MapReduce来说,他的区别是,MapReduce会把计算结果放 在磁盘,spark把计算结果既放在磁盘中有放在内存中,ma ...