概述
JSP:
没有JSP的时候,JAVA服务端是通过Servlet通过向客户端输出字符的一个流--(Writer还或者Printer)--(通过resonse.getWriter()或response.getPrinter()获取)一行一行地输出html代码来展示页面的,页面为了解决servlet在展示页面繁琐,sun公司开发了JSP技术。JSP JAVA Server Page 由于JSP在服务端被请求时会被翻译成JAVA(就是一个Servlet),所以本质上JSP就是Servlet。
JSP工作原理:
1. 当服务器收到 .jsp的请求时,会指派一个名为JspBase的Servlet类出来处理这个请求。
2. JspBase把jsp页面,翻译成 java文件。java文件中就将html内容通过流写到客户端
3. java虚拟机编译java文件 成 class文件
4. 从JspServlet 移交请求给我们刚刚编译好的class文件 。
5. 由jsp转化成的那个class执行此次请求,并且输出数据内容到页面上。
--因此解析了为什么JSP本质上就是一个Servlet
1、JSP三大指令:
1page指令:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
定义JSP文件中的全局属性。
2、include指令:<%@ inlucde file="">
用于引入其他的页面,是做静态包含--只有包含页面才翻译成.Java文件,被包含的页面不翻译成Java文件,直接将被包含文件的代码拷贝到包含文件中,然后由包含文件翻译成的java代码一起输出
3、taglib指令:<%@taglib prefix="" uri="" %>
用于引入标签库(例如jstl标签库)。
JSP九大内置对象:
1、request----HttpServletRequest----- 域对象
2、response----HttpServletResponse----响应对象
3、session----HttpSession----域对象
4、out----JspWriter----字符流-用于向客户端写数据
5、exception----Throwable----如果IsErroPage为true才能使用
6、application----ServletContext----域对象----相当于Servlet里面的ServletContext
7、config----ServletConfig---相当于Servlet里面的ServletConfig
8、page----Object(this)----指当前页面
9、pageContext----PageContext----域对象----当前页面的上下文
JSP四大域对象
ServletContext----域对象
session----HttpSession----域对象
request----HttpServletRequest----- 域对象
PageContext----域对象
{
1.作为域对象存取值(当前页面) pageContext作为域对象用处不大
setAttribute(String name,Object obj);
getAttribute(String name);
removeAttribue(String name);
2.代替其它3个域对象存值
setAttribute(String name,Object obj, int scope);
3.获得其它8个内置对象(EL中会使用到)
getRequest(), getSession()....
4.便捷获得域(四个)对象的值
pageContext.findAttribute(String name);依次从pageContext,request,session,application获取值,
如果找到,终止查找,立即把这个值返回
如果没有找到,返回null
}
JSP六个动作标签(转发到具体页面)
jsp:forward
jsp:param(配合前面的forward来使用 ,表示跳转过去的时候,带参数过去。)
<!-- 跳转请求转发过去的时候,带一点参数过去 -->
<jsp:forward page="/second.jsp">
<jsp:param name="username" value="admin" />
</jsp:forwjsp:forwardard>
-------------------------------------------------
也可以这么写<jsp:forward page="/second.jsp?username=aobama"></jsp:forward>
使用方式如下:<jsp:include page="要包含的页面路径"/>
动态包含
先把被包含的页面,做编译,然后得到输出的结果, 最后跟我们本来的页面结果一起输出。
不管是包含还是被包含,都被翻译成java文件。
jsp:useBean创建一个对象
使用方式如下:<jsp:useBean id="对象名" class="类的全路径名"/>
jsp:setProperty给指定的对象属性赋值
使用方式如下:<jsp:setProperty name="对象名" property="属性名" value="属性值"/>
jsp:getProperty取出指定对象的属性值
使用方式如下:<jsp:getProperty name="对象名" property="属性名"/>
如何让进入首页的时候就发起请求:
使用一个jsp页面作为桥梁,在里面写入Jsp脚本重定向到首页,还可以在路径中加入请求参数
EL表达式(用来在页面上获取域中的数据的一种表达式语言)JSP2.0之后内置在JSP里面
目的:为了使JSP写起来更加简单。(代替脚本 <% %>),语法:${EL表达式 }
EL表达式的作用:
获取域对象中的数据
{
1获取简单数据类型数据:语法:${pageScope|requestScope|sessionScope|applicationScope.属性名};
快捷写法:${属性名 }
${属性名 }:依次从pageScope,requestScope|sessionScope|applicationScope中查找指定的属性
若找到,立即返回,且结束该次查找
若找不到返回""
2获取数组中的数据:语法:${数组属性名[index]};数组属性名就是存入域对象里面的key
3获取List里的数据: 语法:${list属性名[index]};list属性名就是存入域对象里面的key
4获取Map里的数据:语法:${属性名.键},map属性名就是存入域对象里面的key
5获取Bean对象里的属性值: 语法:${bean的属性名(也就是存入的key值).javabean属性}
}
非空判断:语法: ${empyt 属性名};属性名 就是域对象里面的key值,${not empyt 属性名};属性名 就是域对象里面的key值
四个Scope,可以使用便捷获取域对象中存放数据的方法代替
pageScope,requestScope,sessionScope,applicationScope
获取请求参数参数相关的
param.参数名 , 作用相当于request.getParameter()
paramValues,作用相当于request.getParameterValues(name)
获取请求头信息相关的
header
headerValues
全局初始化参数相关 ,相当于servletContext.getInitParameter()
initParam;
cookie
获取的也是一个map集合
map<String cookie的名称,Cookie 对象>
之前
Cookie c=new Cookie("lastTime","123123213");
response.addCookie(c);
相当于将c放入了map中
map.put("lastTime",c);
获取值:
${cookie.lastTime.value}
pageContext:相当于jsp里面的pageContext对象. jsp里面: pageContext.getRequest(); //获得request对象
request.getContextPath(); //动态获得项目名
${pageContext.request.contextPath} // 在JSP页面动态获得项目名
${pageContext.request.contextPath}:在jsp页面中动态的获取项目路径
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
jsp中的九个内置对象(直接在jsp中的<%%>能写出来的对象)
application ( application 对象可将信息保存在服务器中,直到服务器关闭)
session ( 是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据)
request ( request对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)
pageContext (pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象)
out( 输出流 out对象是javax.servlet.jsp.jspWriter接口的实现类,通过调用pageContext.getOut()方法可以获取out对象)response( response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效)
exception( exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用)
config( config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象)
page( page 对象代表JSP本身,只有在JSP页面内才是合法的)
使用EL表达式获取WEB开发的11个对象
applicationScope
sessionScope
requestScope
pageScope
param和paramValues
header和headerValues
cookie
initParam
pageContext
最后
以上就是大气金鱼为你收集整理的JSP与EL表达式的全部内容,希望文章能够帮你解决JSP与EL表达式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复