JSP学习总结
什么是JSP:
在前台可以写后台的java代码
在HTML页面当中内嵌java代码,目的是:将静态页面转变为动态页面(数据);
jsp与servlet的区别:
一个jsp页面就是一个servlet程序
jsp具备servlet一切特性,同时比servlet方便(标签语言)。
jsp包含,jsp常用指令,jsp基本语法,jsp原理
jsp的九大内置对象(非常重要)
jsp程序在第一次请求时需要转化和编译,所以第一次请求的响应比较慢,从第二次开始效率就很高了。
JSP语法:
<%! %> :申明全局变量(成员变量),可以声明方法
<% %> :申明局部变量
<%= %> :输出(不能是表达式,不加分号)
JSP内置对象(很重要)
是web容器创建的一组对象,使用时不需要使用new关键字修饰,可以直接使用。
JSP的九大内置对象
五个常用的内置对象:
1、out(缓冲的输出流,向客户端发送文本数据)
<% out.println("dsdsdsd") ; %>
2、request(请求对象)
3、response(响应对象)
4、session(会话对象)
5、application(上下文对象)
四个不常用的内置对象:
6、page(当前页面)
7、exception(异常对象)
8、config(web.xml的配置)
9、PageContext ( 页面运行环境)
web程序的请求与响应
缓冲区,保存临时数据(Buffer)
注:解决乱码问题
JSP 标签
介绍:
JSP标签也叫作Jsp Action元素,在页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。
JSP常用标签
- <jsp:include>标签
-
<jsp:forward>标签
-
<jsp:param>标签
JSP中使用JavaBean--标签
- 广义概念: java类
- 狭义概念: 符合javaEE 标准的具有特定功能的java类
要有成员属性,get/set方法。
JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为:
- <jsp:useBean>标签:作用于JSP页面中查找或者实例化一个JavaBean(实体类)组件。
- 语法: <jsp:useBean id="beanName" class="package.class" scope="page|request|session|application"/>
- “id”属性:指定实体类实例对象的引用名称和存储在域范围中的名称。(类似 A a = new A() == id="a" 的关系)
- "class"属性:指定实体类的完整类名(必须含有包名)
- “scope”属性:指定实例对象(beanName)存储的域范围,值为page、request、session或者application,默认为page
- 语法: <jsp:useBean id="beanName" class="package.class" scope="page|request|session|application"/>
- <jsp:setProperty>标签:用于在JSP页面中设置一个实体类组件的属性。
-
语法格式一:<jsp:setProperty name="beanName" property="propertyName" value="string字符串"/>
-
语法格式二:<jsp:setProperty name="beanName" property="propertyName" value="<%= expression %>" />
-
语法格式三:<jsp:setProperty name="beanName" property="propertyName" param="parameterName"/>
-
语法格式四:<jsp:setProperty name="beanName" property= "*" />
-
name属性用于指定JavaBean对象的名称。
-
property属性用于指定JavaBean实例对象的属性名。
-
value属性用于指定JavaBean对象的某个属性的值,value的值可以是字符串,也可以是表达式。为字符串时,该值会自动转化为JavaBean属性相应的类型,如果value的值是一个表达式,那么该表达式的计算结果必须与所要设置的JavaBean属性的类型一致。
-
param属性用于将JavaBean实例对象的某个属性值设置为一个请求参数值,该属性值同样会自动转换成要设置的JavaBean属性的类型。
-
-
- <jsp:getProperty>标签:在JSP页面中获取实体类的属性。
- 语法:<jsp:getProperty name="beanInstanceName" property="PropertyName" />
- name属性用于指定JavaBean实例对象的名称,其值应与<jsp:useBean>标签的id属性值相同。
- property属性用于指定JavaBean实例对象的属性名。
- 如果一个JavaBean实例对象的某个属性的值为null,那么,使用<jsp:getProperty>标签输出该属性的结果将是一个内容为“null”的字符串。
- 语法:<jsp:getProperty name="beanInstanceName" property="PropertyName" />
一个简单的小demo帮助理解下:
/** 实体类Persion 属性 */ package me.gacl.domain; public class Persion { private String name; private String sex; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <%-- 尝试JSP对JavaBean的操作,实现<jsp:useBean>标签的使用。 --%> <jsp:useBean id="persion" class="me.gacl.domain.Persion" scope="page"></jsp:useBean> <% persion.setName("王小二"); persion.setSex("男"); persion.setAge(18); %> <jsp:useBean id="persion1" class="me.gacl.domain.Persion" scope="page"></jsp:useBean> <jsp:setProperty property="name" name="persion1" value="王小妹"/> <jsp:setProperty property="sex" name="persion1" value="女"/> <%--在Persion的属性里age为int类型,但是在value=12编译将会出错,一下为正确方式。 --%> <jsp:setProperty property="age" name="persion1" value="12"/> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <p>useBean的使用方法</p> <h2>姓名:<%=persion.getName() %></h2><br> <h2>性别:<%=persion.getSex() %></h2><br> <h2>年龄:<%=persion.getAge() %></h2><br> <hr> <p>jsp:setProperty标签使用demo</p> persion1姓名:<%=persion1.getName() %><br> persion1性别:<%=persion1.getSex() %><br> persion1年龄:<%=persion1.getAge() %> <hr> <p>jsp:getProperty(获得属性) 标签使用demo</p> <h2>persion1姓名:<jsp:getProperty name="persion1" property="name"></h2> <h2>persion1性别:<jsp:getProperty property="sex" name="person"/></h2> <h2>persion1年龄:<jsp:getProperty property="age" name="person"/></h2> </body> </html>