jsp ( java server page)
jsp是java服务器动态web开发技术
jsp=html+servlet
jsp运行原理
浏览器访问服务器上的jsp页面 最终访问的是.class文件
服务器把jsp页面翻译成.java文件 再编译成.class文件
jsp和servlet最佳实现方式
1.servlet:获取参数 处理逻辑 请求转发
2.jsp:html界面 数据回显
java小脚本 <% 书写java代码 %>
<%
int num2=10;
%>
显示数据<%= %>相当于out.print()
<%=num2 %>
jsp注释<%-- --%> 建议用这个
<%-- aaaa --%>
html注释<!-- --> 会被回写到网页上
<!-- 输出到网页上 -->
<%! %> 声明成员变量和方法
<%!
int num1=10;
public void fun(){
}
%>
1. 3个指令
1.page指令 :
和java代码中的import是一样的
<%@ page import="java.util.Date"%>
session开关 默认开启
关上后编译.java文件 系统不会为你创建session对象
<%@page session="true" %>
pageEncoding 设置本页编码
contenttype 相当于response.setcontenttype
<%@ page pageEncoding="UTF-8"%>
errorPage设置错误页面
<%@page errorPage="/3.jsp" %>
默认是关闭的 开启后可以使用exception对象获取异常信息
<%@page isErrorPage="true" %>
2.include指令:
静态包含
编译成.java文件时 直接把两个界面编译成一个.java文件
输出两套html标签
<%@include file="/5.jsp" %>
动态包含
当读取到动态包含时 会把动态包含的那个页面编译成.java文件
<jsp:include page="/5.jsp"> </jsp:include>
3.taglib : 需要引入jstl标准标签库
prefix 使用标签时起的别名
<%@taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c" %>
2.jsp的6个动作<jsp:include > 动态包含
<jsp:forward> 请求转发
<jsp:forward page="/7.jsp"></jsp:forward>
<jsp:param> 设置请求参数
相当于/7.jsp?username=wanglong&&password=123
<jsp:param value="wanglong" name="username"/>
<jsp:param value="123" name="password"/>
<jsp:useBean> 创建一个对象
使用useBean创建一个对象
id:创建这个对象的名字
class:表示哪个类创建该对象
<jsp:useBean id="user1"class="com.lanou3g.User"/>
<jsp:setProperty> 给指定的对象属性赋值
name:表示要赋值那个对象
jsp:setProperty property="username" name="user1" value="aa"/>
<jsp:setProperty property="password" name="user1" value="123"/>
<jsp:getProperty> 取出指定对象的属性值
<jsp:getProperty property="username" name="username"/>
<jsp:getProperty property="password" name="username"/>
3.jsp的9个内置对象
request
response
session
application
exception 获取异常信息 默认是关上的
page 当前servlet实例 this
config
out
pageContext 指当前页面 域对象
pageContext域对象
作用范围 只能当前页面访问到
从小到大
pagecontext<request<session<servletcontext
pageContext强大之处在于可以获取所有的域对象
利用pagecontext对象往各个域中存值:
pageContext.setAttribute("www", "pageContext", PageContext.PAGE_SCOPE);
pageContext.setAttribute("www", "request", PageContext.REQUEST_SCOPE);
pageContext.setAttribute("www", "session", PageContext.SESSION_SCOPE);
pageContext.setAttribute("www", "servletContext", PageContext.APPLICATION_SCOPE);
全域查找 域从小到大查找
<%=pageContext.findAttribute("www") %>
EL表达式 一个书写规范
提供java代码 在jsp页面的简便书写方式
表示全域查找 name="www"的值
内部就是调用了findAttribute()方法
当没有从域中查找到值 什么都不显示
${www }
测试el对空值的显示结果
不管null还是没有内容 都不会报错
真正有值才会显示(容错性高)
判断空值的方法 关键词 empty
返回true false
${empty str1 }
支持三目表达式
${empty str3?"我是前面的":"我是后面的" }
el表达式 获取对象的属性值
javaBean对象导航
相当于内部调用getUsername()
用. 能获取的 []都能获取
用[]获取的 .获取不了
${u1.username }
${u1["username"] }
${list[0] }
${map.b }
${map["c"] }
${u1.city.address }
${u1["city"]["address"] }
el表达式 隐式对象
注意:隐式对象 在el表达式中书写
使用隐式对象 指定域查找对应的值
${pageScope.xxx }
${requestScope.xxx}
${sessionScope.xxx}
${application.xxx }
获取表单提交的数据
${param.username}
${param.password}
${paramValues.hobby[0] }