JSP基础知识:

JSP基础知识:

1.JSP简介:

1.JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。

2.JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

3.JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。

4.优势: 它相比 html 而言,html 只能为用户提供静态数据,而 Jsp 技术允许在页面中嵌套 java 代码,为用户提供动态数据;相比 servlet 而言,servlet 很难对数据进行排版,而 jsp 除了可以用 java 代码产生动态数据的同时,也很容易对数据进行排版。

2.基础语法:

1)注释:

(1)显示注释语法:(浏览器可以看到的注释,可以给用户看的注释)

​ 从 HTML 风格继承而来:

(2)隐式注释语法:(浏览器无法看到的注释,不给用户看的)

​ 从 JAVA 风格继承: // 注释,单行注释 /* 多行注释 */
​ JSP 自己的注释: <%-- JSP 注释 --%>

2) Scriptlet

(1) <% %> :java 脚本段,可以定义局部变量、编写语句
(2)<%! %>:声明,可以定义全局(成员)变量、方法、类
(3)<%= %>:表达式,数据、一个变量或具体内容

(4)代码示例:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>




JSP-scriptlet


	<%
		int a = 0;
		int b = 1;
		System.out.println(a+b);
	%>
	
	<%!
		int c = 8;
	%>
	
	<%="hellojsp" %>
	
3)JSP的指令标签

(1) page 指令:

格式:<%@ page 属性1=值1 属性2=值2 %>
属性:

​ **language:**指定当前jsp所使用的语言,目前就只有java
​ **contentType:**指定响应类型;指定编码字符集
​ **pageEncoding:**指定编码字符集 优先级,charset=UTF-8 > pageEncoding=“UTF-8” > 默认ISO-8859-1
​ **import:**导包
​ **errorPage:**指定当前页面报错跳转的错误页面,需要在错误页面打印错误信息 exception 需要设置 isErrorPage="true"指定所有页面报错跳转,通过配置web.xml 设置

<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@ page errorPage="/error.jsp" language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

(2)include 静态包含:

​ 格式:<%@ include file=”要包含的文件路径”%>相对路径

	<%@ include file="/04include2.jsp" %>

​ 注意:就相当于将包含页面的内容复制黏贴到了标签所在位置,经过JSP引擎翻译后只生成一个文件,所以不能声明相同的变量
​ 优缺点:运行效率高一点点。耦合性较高,不够灵活


(3) taglib 导入标签库:

​ 当使用到第三方标签库时需要通过 taglib 标签进行导入。

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
4)JSP的动作标签:

注意:**动作标签是由 tomcat(服务器)来解释执行!与 java 代码一样,都是在服务器端执行;html 由浏览器来执行!

(1)include:

方法一:在每个 JSP 页面(HTML)都包含工具栏、头部信息、尾部信息、具体内容。
方法二:将工具栏、头部信息、尾部信息都分成各个独立的文件,以后使用的时候直接导入进来。(一般使用第二种);
**静态包含:**静态包含就是将内容进行了直接的替换,就好比程序中定义的变量一样。(就是上面那种)

**动态包含:**动态包含在代码的编译阶段,包含和被包含部分是两个独立的部分,只有当页面被请求的时候时,才会动态包含进来,好比方法的调用。

格式:


		
	

​ **注意:**通过JSP引擎翻译后生成多个文件,相当于方法的调用,所以和静态包含不一样,不会发生变量冲突;除非要通过子标签来传递参数,否则不要在标签内部加任何内容包括空格。


(2)forward:

> forward 动作用于请求转发,可以将一个用户的请求(request),从一个页面传递到另一个页面,跳转的语法。

格式:相当于
request.getRequestDispatch(“请求转发的路径”).forward(request,response);


	


(3)useBean、setProperty、getProperty:

格式:




注意:

jsp:setProperty:给对象设置属性
中的 name 值要与 中的 id 值相同

jsp:getProperty:获取对象中的属性值

useBean:

属性 描述
id 指定Bean的别名
class 指定Bean的完整包名。
type 指定将引用该对象变量的类型。
beanName 通过 java.beans.Beans 的 instantiate() 方法指定Bean的名字。

3.Jsp 的九大内置对象:

NO 内置对象 类型 描述
1 PageContext javax.servlet.jsp.PageContext JSP的页面容器
2 request javax.servlet.http.HttpServletRequest 得到用户的请求信息
3 response javax.servlet.http.HttpServletResponse 服务器向客户端的回应消息
4 session javax.servlet.http.HttpSession 用来保存每一个用户的信息
5 application javax.servlet.ServletContext 表示所有用户的共享信息
6 config javax.servlet.ServletConfig 服务器配置,可以取得初始化参数
7 out javax.servlet.jsp.JspWriter 页面输出
8 page java.lang.Object 表示从该页面中表示出来的一个Servlet实例
9 exception java.lang.Throwable 表示JSP页面所发生的异常,在错误页中才起作用

4.EL 表达式:

**1)概念:**EL(Expression Language)是为了使 JSP 写起来更加简单。表达式语言的灵感来自于ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让 Jsp 的代码更加简化。

2)语法结构:${expression}

3)格式:

返回域对象中指定键对应的值:${域对象中键的名称 }
获取域对象中对象指定属性对应的值:${域对象中键的名称.属性名 }
判断域对象中指定键对应的值是否为空:${empty 键的名称 }
判断域对象中指定键对应的值是否相等:${键1==键2 }

4)注意:

从小到大获取域对象中的数据,如果都没有则显示"",
获取指定域对象中的数据:${域对象名称Scope.uname }

1)代码示例:
<%@page import="java.util.Map"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.mage.po.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>




el表达式



	
	<%
		pageContext.setAttribute("uname", "xiaoxao");
		request.setAttribute("uname", "mengmeng");
		session.setAttribute("uname", "pengpeng");
		application.setAttribute("uname", "xixi");
		
		User user = new User();
		user.setName("lh");
		user.setAddress("江西");
		user.setSex(true);
		request.setAttribute("user", user);
	%>
el表达的方式:
${uname1 }
el表达式获取指定域对象中的值:
pageContext中:${pageScope.uname }
request中:${requestScope.uname }
session中:${sessionScope.uname }
application中:${applicationScope.uname }
el表达式方式获取对象中的属性对应的值:
${user.name } el表达式获取List数据:
<% List list = new ArrayList(); list.add("a"); list.add("b"); list.add("c"); request.setAttribute("list", list); %> 获取list中指定数据:${list[1] }
判断是否为空:${empty list[3] }
el表达式获取map数据:
<% Map map = new HashMap(); map.put("a","1"); map.put("b","2"); map.put("c","1"); request.setAttribute("map", map); %> ${map["a"] } ${map.a }
el表达式运算:
<% request.setAttribute("a", "1"); request.setAttribute("b", 1); request.setAttribute("c", 2); request.setAttribute("d", "1"); %> 加法:${a+c }
判断是否相等:1${a==d }

你可能感兴趣的:(JSP基础知识:)