JSP的内置对象:不用new,直接拿来就能用
对象名 |
类型 |
说明 |
request |
javax.servlet.http.HttpServletRequest |
|
response |
javax.servlet.http.HttpServletResponse |
|
session |
javax.servlet.http.HttpSession |
由session="true"开关 |
application |
javax.servlet.ServletContext |
|
exception |
java.lang.Throwable |
由isErrorPage="false"开关 |
page |
java.lang.Object当前对象this |
当前servlet实例 |
config |
javax.servlet.ServletConfig |
|
out |
javax.servlet.jsp.JspWriter |
字符输出流,相当于 printWriter对象 |
pageContext |
javax.servlet.jsp.PageContext |
|
本身也是一个域对象:它可以操作其它三个域对象(request session application)的数据
范围从小到大依次是request《session《application
数据的存储方式:
Ø void setAttribute(String name,Object o);
Ø Object getAttribute(String name);
Ø void removeAttribute(String name);
Ø void setAttribute(String name,Object o,int Scope);
Ø Object getAttribute(String name,int Scope);
Ø void removeAttribute(String name,int Scope);
Ø PageContext.PAGE_SCOPE
Ø PageContext.REQUEST_SCOPE
Ø PageContext.SESSION_SCOPE
Ø PageContext.APPLICATION_SCOPE
Ø void setAttribute(String name,Object o);
Ø Object getAttribute(String name);
Ø void removeAttribute(String name);
Ø void setAttribute(String name,Object o,int Scope);
Ø Object getAttribute(String name,int Scope);
Ø void removeAttribute(String name,int Scope);
Ø PageContext.PAGE_SCOPE
Ø PageContext.REQUEST_SCOPE
Ø PageContext.SESSION_SCOPE
Ø PageContext.APPLICATION_SCOPE
自动从page request session application依次查找,找到了就取值,结束查找。
在普通类中可以通过PageContext获取其他JSP隐式对象。(其他八个)
![]()
|
pageContext.forward("2.jsp");
pageContext.include("2.jsp");
转发方式:
page和pageContext的关系 相等
JSP的EL表达式:
EL表达式是用来获取4大作用域数据的,是用来简化Java代码的
EL的使用方法:${作用域key.属性名} 实际上是调用了对应的方法get方法
点(.) 运算符相当于调了getter方法,点后页面跟的是属性名。
<%@page import="com.zx.model.Address"%> <%@page import="com.zx.model.User"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% //1.EL表达式 //jsp往request存数据 User user=new User("张大大","123","男"); user.setAddress(new Address("中国","陕西")); request.setAttribute("user", user); %> 显示数据:<br> <%-- <%=user.getName() %> <%=user.getPassword() %> <%=user.getGender() %> --%> 名字:${user.name} ------------${user[‘name‘]}<br> 密码:${user.password}<br> 性别:${user.gender}<br> 国家:${user.address.country}<br> 城市:${user.address.city}<br> </body> </html>
用于判断null,空字符串和没有元素的集合(即使集合对象本身不为null)都返回true
若集合为null,或者是集合没有元素,都返回true
字符串也是一样的
<% List<String> list1=null; List<String> list2=new ArrayList<String>(); list2.add("zx"); request.setAttribute("list1", list1); request.setAttribute("list2", list2); %> list1是否为空:${empty list1}<br> list2是否为空:${empty list2}<br> 结果: list1是否为空:true list2是否为空:false
EL的隐式对象:
${pageContext.request.contextPath}<br>
通过EL表达式获取上下文路径 作用:灵活设置Servlet的访问路径
${param【‘参数名’】}也可以
JSTL:JSP标签库的使用
使用步骤:
通用标签:set,out,remove----用于操作作用域数据
set:存一个变量值
out:取值
remove:从作用于移除变量
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <%--JSTL:JSP标签库的使用 --%> 存数据:<c:set var="num" value="${5+8}" scope="page"></c:set><br> 取数据:<c:out value="${num}"></c:out><br> 移除数据:<c:remove var="num"/><br> 再次取出:<c:out value="${num}" default="8888"></c:out> </body> </html>
条件标签 if choose
1.test属性中写EL表达式
2.choose 内部y与when一起使用,相当于switch
forEach
var:放变量名 items:写El表达式,一般写作用域中的key
varStatus:变量状态
其中,forEach中的语句与下列代码意思类似:
for (String item:list){ }
迭代器
EL表达式中调用get方法,所以在表达式中只需要写出xx.index,或者xx.first即可(Boolean方法的get方法就是is方法)
MVC:
v 一个无参构造
v 私有属性
v 公共的getter和setter方法
具体案例:
项目出现了一些问题,就不放代码了
原文:https://www.cnblogs.com/zhangwugai/p/11516502.html