JSP知识点大全(前无古人,后无来者,一文带你学完JSP!!!)

目录

    • 一:jsp基础
      • 1.jsp的作用
      • 2.jsp和Servelt的分工
      • 3.jsp的组成
      • 4.JSP和Servlet分工的案例
      • 5.JSP原理
      • 5.jsp注释
    • 二:Cookie处理
      • 1.Http协议与Cookie
      • 2.Cookie的用途
      • 3.JavaWeb中使用Cookie
      • 4.Cookie详解
      • 5.Cookie的跨域访问
      • 6.Cookie的小案例
    • 三:HttpSession
      • 1.HTTPSession概述
      • 2.HttpSession的作用
      • 3.案例一:演示session中会话的多次请求中共享数据
      • 4.案例二:演示保存用户登录信息
      • 5.HttpSession的原理
      • 6.HttpSession的其他方法
      • 7.session之url重写
    • 四:验证码
      • 1.生成图片
      • 2.登录功能之添加验证码
    • 五:JSP指令
      • 1.JSP指令概述
      • 2.page指令
      • 3.include和laglib指令
      • 3.JSP动作标签
    • 六:JavaBean
      • 1.BeanUtils的使用
      • 2.jsp中与javaBean相关的标签
    • 七:EL表达式入门及EL函数库
      • 1.EL入门
      • 2.EL函数库
    • 八:JSTL
      • 1.JSTL概述
      • 2.core库(c标签)

一:jsp基础

jsp: 全称javaServletPages

1.jsp的作用

  • Servet:
    缺点:不适合设置html响应体,需要大量的response.getWriter().print("");
    优点:动态资源,可以编程
  • html:
    缺点:html是静态页面,不能包含动态信息
    优点:不用为输出html标签而发愁
  • jsp:
    优点:在原有的html基础上添加java脚本,构成jsp页面

2.jsp和Servelt的分工

  • JSP:
    作为请求发起页面,例如显示表单、超链接。
    作为请求结束页面,例如显示数据。
  • Servlet:
    作为请求中处理数据的环节

3.jsp的组成

  • jsp=html+java脚本+jsp标签(指令)
  • jsp中无需创建即可使用的对象一共有9个,被称之为9大内置对象。例如:request对象,out对象
  • 3种java脚本
    1. <%…%>:java代码片段(常用),用于定义0~N条Java语句。方法里面能放什么他就能放什么。
    2. <%=…%>:java表达式,用于输出(常用),用于输出一条表达式(或变量)的结果。
      输出语句里面能放什么他就能放什么。
    3. <%!..%>:声明,用来创建类的成员变量和成员方法(基本不用)。类里面能放什么他就可以放什么

4.JSP和Servlet分工的案例

JSP知识点大全(前无古人,后无来者,一文带你学完JSP!!!)_第1张图片
form.jsp:

<form action="AServlet" method="post">
  整数1<input type="text" name="value1" ></br>
  整数2<input type="text" name="value2"></br>
  <input type="submit" value="计算">
</form>

servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		String value1=request.getParameter("value1");
		String value2=request.getParameter("value2");
		int sum=Integer.valueOf(value1)+Integer.valueOf(value2);
		request.setAttribute("sum", sum);
		System.out.println(request.getAttribute("sum"));
		
		request.getRequestDispatcher("result.jsp").forward(request, response);
	}

result.jsp:

<body>
<h>结果是:</h><% Integer result=(Integer)request.getAttribute("sum");%>
<%=result %>
</body>

5.JSP原理

  • jsp其实就是一种特殊的Servlet
    当jsp页面第一次被访问时,服务器会把jsp编译成java文件(这个java其实是一个Servlet类)
    然后再把Java编译成.class
    然后再创建该类对象
    最后调用它的service()fangfa
    当第二次请求同一个jsp时,就会直接调用service()方法
  • 在tomcat的work目录下可以找到jsp对应的.java源代码。

5.jsp注释

  • <%–…--%>:当服务器把jsp编译成java文件时已经忽略了注释部分!而html注释则不会忽略。

二:Cookie处理

Cookie就是服务器发送给客户端的

1.Http协议与Cookie

  • Cookie是Http协议制定的!先由服务器保存Cookie到浏览器,再下次浏览器请求服务器时把上一次请求到的Cookie在归还给服务器
  • 由服务器创建保存到客户端浏览器的一个键值对!服务器保存Cookie的响应头:set-Cookie:aaa=AAA
    responce.addHeader("Set-Cookie",“aaa=AAA”)
  • 当浏览器请求服务器时,会把服务器保存的Cookie随请求发送给服务器。浏览器归还Cookie的请求头:Cookie:aaa=AAA
  • Http协议规定:
    1. 1个Cookie最大4KB
    2. 一个服务器最多向一个浏览器保存20个Cookie
    3. 一个浏览器最多可以保存300个Cookie
      注意:Cookie是不能跨浏览器的!!!

2.Cookie的用途

  • 服务器使用Cookie来跟踪客户端的状态
  • 保存购物车(购物车中的商品不能使用request来保存,因为它是一个用户向服务器发送的多个请求信息)
  • 显示上一次的登录名(也是一个用户的多个请求)

3.JavaWeb中使用Cookie

  • 原始方式(了解):
    使用reponse发送Set-Cookie响应头
    使用request获取Cookie请求头
  • 便捷方式(精通):
    使用reponse.addCookie()方法向浏览器保存Cookie
    使用request.getCookies()向浏览器获取归还的Cookie

4.Cookie详解

  • Cookie不只有name和value两个属性
  • Cookie的maxAge():Cookie的最大生命,即Cookie可保存的最大时长,以秒为单位。
  1. maxAge>0:浏览器会把Cookie保存到客户机硬盘上,有效时长为maxAge()的值决定
  2. maxAge<0:Cookie只在浏览器内存中存在,当用户关闭浏览器时,浏览器进程结束,同时Cookie也就死亡了。
  3. maxAge=0:浏览器会马上删除这个Cookie!
  • Cookie的path:
  1. Cookie的path并不是设置这个Cookie在客户端的保存路径!!!而是当浏览器访问服务器的路径,如果包含某个Cookie的路径,那么就会归还这个Cookie。

5.Cookie的跨域访问

domain用来指定Cookie的域名!当多个二级域名共享时才有用
例如,在www.baidu,com;xyz.baidu.com之间共享cookie时可以使用domain

  • 设置domain 为:cookie.setDomain(".baidu.com");
  • 设置path为:cookie.setPath("/");

6.Cookie的小案例

内容实现,一个jsp用来给客户端添加Cookie。另一个jsp来获取客户端返回的Cookie.

添加Cookie:

<h1>保存cookie</h1>
<% Cookie cookie1 =new Cookie("aaa","AAA") ;
   Cookie cookie2=new Cookie("bbb","BBB");
   response.addCookie(cookie1);
   response.addCookie(cookie2);
   
%>

获取Cookie:

<h1>获取Cookie</h1>
<%
   Cookie[] cookies=request.getCookies();
    if(cookies!=null){
    	for(Cookie c:cookies){
    		out.print(c.getName()+":"+c.getValue()+"
"
); } } %>

三:HttpSession

1.HTTPSession概述

  1. HttpSession是由JavaWeb提供的,用来会话跟踪的类。session是服务器端对象,保存在服务器端。
  2. HttpSeesion是Servlet三大域对象之一(request、session、application(ServeltContext)),所以它也有setAttribute(),getAttribute(),removeAttribute().
  3. HttpSession底层依赖Cookie,或是URL重写。

2.HttpSession的作用

  • 会话范围:会话范围是某个用户从首次访问服务器开始,到该用户关闭浏览器结束!
  • 服务器会为每个客户端创建一个Session对象,session就好比客户在服务器端的账户,他们被服务器保存到一个Map中,这个Map被称之为Session缓存!
  • session是Jsp的内置对象,不用创建就可以直接使用。
  • session域的相关方法:
    1. void setAttribute(String name,Object value);
    2. Object getAttribute(String name);
    3. void removeAttribute(String name);

3.案例一:演示session中会话的多次请求中共享数据

AServlet:向session域中保存数据
Bservlet:向session域中获取数据

保存:

<h1>向session中添加数据</h1>
<%
 session.setAttribute("aaa", "AAA");
%>

获取:

<%
 String s=(String)session.getAttribute("aaa");
  out.print(s);
%>

4.案例二:演示保存用户登录信息

  • 案例相关页面和Servlet

    1. login.jsp:登录页面。 提供登录表单,提交表单数据请求LoginServlet
    2. succ1.jsp:只有登录成功才能访问的页面。从Session域中获取用户信息,如果不存在,显示“您还没有登录”.存在则显示用户信息
      3.succ2.jsp:只有登录成功才能访问的页面。从Session域中获取用户信息,如果不存在,显示“您还没有登录”.存在则显示用户信息
    3. LoginServlet:获取请求参数,校验用户是否登录成功!

    ps:只要用户没有关闭浏览器,Session就一直存在,那么保存在session中的用户信息也就一起存在!那么用户访问succ1和succ2都会通过

思维导图:
JSP知识点大全(前无古人,后无来者,一文带你学完JSP!!!)_第2张图片
login.jsp:

<body>
<!-- /*
 获取客户端存在的cookie将它显示到用户名文本框中
*/ -->
<%
  String uname="";
  Cookie []cs=request.getCookies();
  if(cs!=null){
	  for(Cookie c:cs){
		  if(c.getName().equals("uname")){ //找到用户名
			   uname=c.getValue();
		  }
	  }
  }
%>
 <% 
String message="";
String msg=(String)request.getAttribute("msg");
if(msg!=null){
	message=msg;
}
 %>
<h1>登录界面</h1>
<font color="red" ><b><% out.print(message);%></b></font> 
<form action="/learn1JSP/LoginServlet"  method="POST">
  用户名:<input type="text"  name="username" value="<%=uname%>"></br>  
  密  码:    <input type="text"  name="password"></br>
  <input type="submit" value="提交">
</form>
</body>
</html>

LoginServlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    //设置请求编码
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		//获取请求参数
		String username=(String) request.getParameter("username");
		String password=request.getParameter("password");
		System.out.println(username);
		System.out.println(password);
		//附加项:如果登录成功,将用户名保存到Cookie中,当用户再次登录时会自动显示用户名
		
		if(!"xyz".equalsIgnoreCase(username)) {//请求成功,将用户信息存储到session中,并且重定向到succ1.jsp
			HttpSession session=request.getSession();
			session.setAttribute("username", username);
			Cookie cookie=new Cookie("uname",username);
			cookie.setMaxAge(60*60*20);//设置Cookie的存活时间
			response.addCookie(cookie);
			response.sendRedirect("/learn1JSP/session2/succ1.jsp");
		}else {//请求失败,转发到succ2.jsp
			request.setAttribute("msg", "用户名或密码错误");//返回提示信息
			request.getRequestDispatcher("/session2/login.jsp").forward(request, response);
		}
	}

succ1.jsp:

<body>
<% String username=(String)session.getAttribute("username"); 
if(username==null){
	request.setAttribute("msg", "您还没有登录,不要冒充领导");
	request.getRequestDispatcher("login.jsp").forward(request, response);
	return ;
}
%>
<h1>succ1</h1>

欢迎<%= username%>来视察工作
</body>

5.HttpSession的原理

  • request.getSession()方法:
    获取Cookie中的JSESSIONID:
    1. 如果sessionId不存在,创建session,把session保存起来,把新创建的sessionId保存到cookie中。
    2. 如果sessionId存在,通过sessionId查到session对象,如果没有查找到,创建session,把session保存起来,把新创建的sessionId保存到Cookie中。
    3. 如果sessionId存在,通过sessionId查找到了session对象,那么就不会再创建session对象了。
    4. 返回session。
    如果创建了新的session,浏览器会得到一个包含了sessionId的Cookie,这个Cookie的生命为-1,即只在浏览器内存中存在。如果不关闭浏览器,那么Cookie在下次请求时,再次执行request。getSeesion()方法时,因为可以通过Cookie中的sessionId找到session对象,所以与上一次请求使用的是同一session对象。
  • 服务器不会马上给你创建session,在第一次获取session是,才会创建!request.getSession();
  • request.getSession(false)、 request.getSession(true)、request.getSession()。后两个方法效果相同。
    第一个方法:如果session缓存中(如果cookie不存在),不存在session,那么返回null,而不会创建session对象。

6.HttpSession的其他方法

  • String getId():获取sessionId()

  • int getMaxInactiveInterval():获取session的最大不活动时间(秒),默认为30分钟。当session在30分钟内没有使用,那么Tomcat会在session池中移除。

  • void invalidate():让sesion失效!调用这个让发会让session失效,当session失效后,客户端再次请求,服务端会给客户端创建一个新的session,并再响应。

  • boolean isNew():查看session是否为最新;

  • web.xml中配置session的最大不活动时间:


    30

7.session之url重写

  • session依赖Cookie,目的是让客户端发出请求时归还sessionId,这样才能找到对应的sesion
  • 如果客户端禁用了Cookie,那么就无法得到sessionId,那么session也就无用了
  • 也可以使用URL重写来替代Cookie
    让网站所有的超链接、表单中都添加一个特殊的请求参数,即sesionId
    这样服务器可以通过获取请求参数的到sessionId,从而找到session对象。
  • response.encodeURL(String url)
    该方法会对url进行智能的重写;当请求中没有归还sessionid这个cookie,那么该方法会重写url,否则不重写!当然url必须是指向本站的url。

四:验证码

1.生成图片

这个类可以随机生成四个字母的验证码图片,并可以得到里面的字符串。

public class VerifyCode {

	private int w=72;
	private int h=35;
	private Random r=new Random();
	private String []fontNames= {"宋体","华文楷体","黑体","微软雅黑","楷体_GB2312"};
	//可选字符
	private String codes="23456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRXTUVWXYZ";
	//背景色
	private Color bgColor =new Color(255,255,255);
	//验证码上的文本
	private String text;
	//生成随机的颜色
	private Color randomColor() {
		int red=r.nextInt(150);
		int green= r.nextInt(150);
		int blue=r.nextInt(150);
		return new Color(red,green,blue);
	}
	//生成随机的字体
	private Font randomFont() {
		int index=r.nextInt(fontNames.length);
		String fontName=fontNames[index];
		int style=r.nextInt(4);//生成随机的样式,0(无样式)1(粗体)2(斜体)3.(粗体加斜体)
		int size=r.nextInt(5)+24;
		return new Font(fontName,style,size);
	}
	//画干扰线
	private void drawLine(BufferedImage image) {
		int num=3;//一共画三条
		Graphics2D g2=(Graphics2D) image.getGraphics();
		for(int i=0;i<num;i++) {//生成两个点的坐标
			int x1=r.nextInt(w);
			int y1=r.nextInt(h);
			int x2=r.nextInt(w);
			int y2=r.nextInt(h);
			g2.setStroke(new BasicStroke(1.5F));
			g2.setColor(Color.BLUE);
			g2.drawLine(x1,y1,x2,y2);
		}
	}
	//随机生成一个字符
	private char randomChar() {
		int index=r.nextInt(codes.length());
		return codes.charAt(index);
	}
	//创建BufferImage
	private BufferedImage createImage() {
		BufferedImage image=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
		Graphics2D g2=(Graphics2D) image.getGraphics();
		g2.setColor(this.bgColor);
		g2.fillRect(0,0,w,h);
		return image;		
	}
	//调用这个方法得到验证码
	public BufferedImage getImage() {
		BufferedImage image=createImage();//创建图片缓冲区
		Graphics2D g2=(Graphics2D) image.getGraphics();//得到绘制环境
		StringBuilder sb=new StringBuilder();//用来装载生成的验证码文本
		//向图片中画4个字符
		for(int i=0;i<4;i++) {
			String s=randomChar()+"";//随机生成一个字符
			sb.append(s);
			float x=i*1.0F*w/4;//设置当前字符的x轴坐标
			g2.setFont(randomFont());//设置随机字体
			g2.setColor(randomColor());//设置随机颜色
			g2.drawString(s,x,h-5);//画图
		}
		this.text =sb.toString();
		drawLine(image);//添加干扰线
		return image;
	}
	//返回验证码图片上的文本
	public String getText() {
		return text;
	}
	//保存图片到指定的输出流
	public static void output (BufferedImage image,OutputStream out) throws IOException {
		ImageIO.write(image,"JPEG",out);
	}
}

2.登录功能之添加验证码

思维图:
JSP知识点大全(前无古人,后无来者,一文带你学完JSP!!!)_第3张图片
VerifyCodeServlet:

由于代码只是对上面的案例进行了补充,所以这里只写一个如果在客户端生成验证码图片吧。
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置编码方式
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		/*
		 * 1.向客户端返回图片
		 * 2.将图片中的文本信息保存到session域中
		 */
		VerifyCode vc=new VerifyCode();
		BufferedImage image=vc.getImage();
		request.getSession().setAttribute("session", vc.getText());
		VerifyCode.output(image, response.getOutputStream());
	}

五:JSP指令

1.JSP指令概述

JSP指令的格式:<@指令名 attr1="“attr2=”"%>,一般都会把JSP指令放到JSP文件的最上方,但这不是必须的.
JSP 中有三大指令:page、inclue、taglib,最为常用也是最为复杂。

2.page指令

  1. pageEncoeding和contentType:
    • pageEncodeing:它指定当前jsp页面的编码,只要不说谎,就不会有乱码!在服务器要把jsp编译成.java时需要使用pageEncoding!
    • contentType:它表示添加一个响应头:Contecnt-Type!等同于response.setContentType(“text/html;charset=utf-8”);
      如果两个属性值提供一个,那么另一个的默认值为设置的那一个。
      如果两个属性都没有设置,那么默认为iso
  2. import :导包!可以出现多次
  3. errorPage和isErrorPage
    • errorPage:当前页面如果抛出异常,那么要转发到哪一个也买你,有errorPage来指定。
    • isErrorPage:它指定当前也买你是否为处理错误的页面!当该属性为true 时,这个页面会设置状态码为500!而且这个页面可以使用9大内置对象中的exception!
  4. 在web.xml中进行配置,当页面出现指定状态错误或指定类型错误会跳转到相应的界面。
    <error-page>
     <error-code>400</error-code>
     <location>/error/101</location>
  </error-page>
  <error-page>
      <exception-type>java.lang.RuntimeException</exception-type>
      <location>/error/100</location>
  </error-page>
  1. autoFlush和buffer
    • autoFlush:指定jsp的输出流缓冲区满时,是否自动刷新!默认为true,如果为false,那么在缓冲区满时抛出异常!
    • buffer:指定缓冲区大小,默认为8kb,通常不需要修改。
  2. isELIgnored:是否忽略el表达式,默认为false,不忽略,即支持!

九个内置对象:

  1. out :jsp的输出流,用来向客户端响应
  2. page:当前jsp对象!他的引用类型时Object,即真身中有如下代码:Object page=this;
  3. config:它对应真身中的ServletConfig对象!
  4. pageContext:一个顶九个
    Servlet中有三大域,而JSP中有四大域,它就是最后一个域对象!
    pageContext:一个JSP页面!这个域是在当前jsp页面和当前jsp页面使用的标签之间共享数据!
    - 域对象
    - 代理其他域
    - 全域查找:pageContext.findAttribute(‘xxx’);从小到大,依赖查找。
    - 获取其他8个内置对象。
  5. request:HttpServletRequest
  6. response:HttpServletResponse
  7. exception:Throwable
  8. session:HttpSession
  9. application:ServletContext

3.include和laglib指令

include(静态包含)

  • 与RequestDispatcher的include()方法的功能相似。
  • <%@include%>它是在jsp编译成java文件时完成的!他们共同生成一个java(就是一个servlet)文件,然后再生成一个class!
  • RequestDispatcher的include()是一个方法,包含和被包含的是两个servlet,即两个.class!他们知识把响应的内容在运行时合并了!
  • 作用:把页面分解了,使用包含的方式组合在一起,这样一个页面中不变的部分,就是一个独立的jsp,而我们只需要处理变化的页面。

taglib(导入标签库):

两个属性:

  • prefix:指定标签库在本页面中的前缀!由我们自己来起名称!
  • uri:指定标签库的位置

3.JSP动作标签

这些jsp的动作标签,与html提供的标签有本质的区别。

  • 动作标签是由tomcat(服务器)来解释执行!它与java代码一样,都是在服务器端执行的!
  • html是由浏览器来执行
  • :转发!他与RequestDispatcher的forward方法是一样的,一个在Servlet中使用,一个在jsp中使用!
  • :转发!他与RequestDispatcher的include方法是一样的,一个在Servlet中使用,一个在jsp中使用!
  • :它用来作为forward和include的子标签!用来给转发或包含的页面传递参数!

六:JavaBean

内省图:
JSP知识点大全(前无古人,后无来者,一文带你学完JSP!!!)_第4张图片

1.BeanUtils的使用

通过Bean Utils给JavaBean赋值:

public static void main1(String[] args) {
		//通过类名得到一个对象
		String className="net.xyz.domain.Person";
		
		try {
			Class clase=Class.forName(className);
			Object bean=clase.newInstance();
			BeanUtils.setProperty(bean, "name", "张三");
			BeanUtils.setProperty(bean, "age", 18);
			BeanUtils.setProperty(bean, "gander", "男");
			System.out.println(bean.getClass());
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

通过map创建javabean对象:

//根据map生成一个Javabean,要求map中的属性要和Bean中的属性一致
	public static void main3(String[] args) {
		Map<String,String> map=new HashMap<String, String>();
		map.put("username","张三");
		map.put("password","123");
		map.put("username","张三");
		map.put("password","123");
		User user=new User();
		
		try {
			BeanUtils.populate(user, map);
			System.out.println(user);
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

2.jsp中与javaBean相关的标签

  • :创建或查询bean,如果没有就创建,如果有就查询
  • :设置属性
  • :得到属性

七:EL表达式入门及EL函数库

1.EL入门

  1. EL是JSP内置的表达式语言
    EL代替的的是<%=%>,也就是说EL只能做输出!
  2. EL表达式用来读取四大域
    ${xxx},全域查找名为xxx的属性,如果不存在,输出空字符串,而不是null
    ${pageScope.xxx}、${reqeustScope.xxx}、${sessionScope.xxx}、${applicationScope.xxx},指定域获取属性!
  3. JavaBean导航:EL可以找到Java Bena 中的每个属性emp.name.add;不需要调用其中的方法
  4. EL可以输出的东西都在11个内置对象中

2.EL函数库

JSP知识点大全(前无古人,后无来者,一文带你学完JSP!!!)_第5张图片

八:JSTL

1.JSTL概述

  • apache的东西,依赖EL
  • 使用jstt需要导入jstl1.2.jar包
  • 四大库:
    core:核心库
    fmt: 格式化:日期、数字
    sql:过时了
    xml:过时了
  • 导入标签库
    jar包
    在jsp页面中:<%@taglib perfix=“前缀” url=“路径”%>

2.core库(c标签)

  1. out和set
    • out:输出语句
<%
request.setAttribute("code", "");
%>
${code }
<c:out value="${code }" escapeXML="true"/>
  escapeXml:默认值为true,表示转义
 
   2. set:创建域的属性
<c:set var="a" value="bb" scope="request"/>
  1. remove
<c:remove var="a" scope="request"/>

删除域变量,如果不给出域,则会删除所有域中的指定对象,给出域后,就删除指定域中的变量名。
3. url:

 <c:url value="/jstl.jsp">//自动补全项目名
      <c:param name="zhangsan " value="jj"/>//在url后面添加参数
   </c:url >

4.if:
JSP知识点大全(前无古人,后无来者,一文带你学完JSP!!!)_第6张图片
5. choose:
JSP知识点大全(前无古人,后无来者,一文带你学完JSP!!!)_第7张图片
6.forEach:
它用来循环遍历数组、集合
他还可以用计数方式来循环
在这里插入图片描述
在这里插入图片描述
循环变量:
JSP知识点大全(前无古人,后无来者,一文带你学完JSP!!!)_第8张图片
7.fmt库:格式化库
格式化时间:
JSP知识点大全(前无古人,后无来者,一文带你学完JSP!!!)_第9张图片
格式化数字:
JSP知识点大全(前无古人,后无来者,一文带你学完JSP!!!)_第10张图片

你可能感兴趣的:(#,javaWeb)