JSP相关学习

动态页面技术(JSP/EL/JSTL)

<!-- jsp的三种脚本方式 -->
    <%
    	int i = 5;

		//这是单行注释 
		/*这是多行注释*/
	%>
	<%=i%>
	<%!String str = "Hello JSP!";%>
	<%=str%>

	<!-- jsp的三种注释 -->

	<%-- 这是JSP注释 --%>

JSP脚本和注释

JSP本质

三大指令

  • page指令:重要的import指令
  • include指令:提取公共头和尾
  • taglib指令:引入第三方标签库的

JSP九大内置/隐式对象--笔试

页面输出内容的四种方式

    <!-- 方式一:直接输出 -->
	aaaaaaaaaaaaaa
	
	<!-- 方式二:jsp脚本 -->
	<%
		out.write("bbbbbbbbbbbb");
		response.getWriter().write("cccccccccc");
	%>
	<%="dddddddddddd" %>

out对象

  • out对象的类型:JspWriter
  • out对象的作用就是向页面输出内容
  • out缓冲区默认8kb,可以设置为0,代表关闭out缓冲区,内容直接写到response缓冲区

pageContext对象(域对象)

pageContext可以向其他的域对象中存取数据

    <%
		request.setAttribute("name", "wangwu");
		pageContext.setAttribute("name", "Jerry");

		// 使用pageContext对象向其他域中存取数据
		pageContext.setAttribute("name", "lisi", PageContext.REQUEST_SCOPE);
		pageContext.setAttribute("name", "zhangsan", PageContext.SESSION_SCOPE);
		pageContext.setAttribute("name", "Tom", PageContext.APPLICATION_SCOPE);
	%>

	<!-- findAttribute方法会从小到大搜索范围中的name -->
	<!-- 域的作用范围大小比较,其中pageContext域习惯叫做page域,application域就是servletContext域 -->
	<!-- pageContext域 < request域 < session域 < application域 -->
	<%=pageContext.getAttribute("name", PageContext.REQUEST_SCOPE)%>
	<%=pageContext.findAttribute("name")%>

pageContext对象可获得其他八大对象

四大域的总结

  • page域(pageContext):当前jsp页面
  • request域:一次请求
  • session域:一次会话
  • application域:整个web应用

JSP动作(常用)

  • 页面包含(动作包含):<jsp:include page="被包含的页面"/>
  • 请求转发:<jsp:forward page="要转发的资源"/>

EL(Express Language)表达式

EL的主要作用就是为了简化jsp脚本的,主要方向是简化从域中取出数据

  • 最重要的作用就是从域中取出数据。其语法格式为
    $
  • 最重要的通过EL的内置对象pageContext获得request对象,再通过request对象获得web应用的名称。${pageContext.request.contextPath}

jsp的本质就是servlet

EL执行表达式

  • $
  • ${empty obj}--判断一个对象是否为空,是返回true,否则返回false
  • $

JSTL(JSP Standard Tag Library)----JSP标准标签库

要使用jstl库,需要导入两个jar包:jstl.jarstandard.jar

    <%
		// 1.模拟List<String>
		List<String> strList = new ArrayList<String>();
		strList.add("Tom");
		strList.add("Jerry");
		strList.add("Mikey");

		request.setAttribute("strList", strList);

		// 2.模拟List<User>
		List<User> userList = new ArrayList<User>();
		userList.add(new User("1001", "张三", "156235"));
		userList.add(new User("1002", "张四", "fdt785"));
		userList.add(new User("1003", "Li Li", "gdhjkt"));

		pageContext.setAttribute("userList", userList);

		// 3.模拟Map<String,String>
		Map<String, String> strMap = new HashMap<>();
		strMap.put("one", "1");
		strMap.put("two", "2");
		strMap.put("three", "3");

		session.setAttribute("strMap", strMap);

		// 4.模拟Map<String,User>
		Map<String, User> userMap = new HashMap<>();
		userMap.put("user1",new User("1001", "张三", "156235"));
		userMap.put("user2",new User("1002", "张四", "的方式根深蒂固"));
		userMap.put("user3",new User("1003", "张五", "fsdffgd"));

		application.setAttribute("userMap", userMap);
	%>

	<h1>取出strList中的数据</h1>
	<c:forEach items="${strList }" var="str">
		${str }<br>
	</c:forEach>

	<h1>取出userList中的数据</h1>
	<c:forEach items="${userList }" var="user">
		user的id:${user.id }---user的username:${user.username }---user的password:${user.password }<br>
	</c:forEach>

	<h1>取出strMap中的数据</h1>
	<c:forEach items="${strMap }" var="entry">
		${entry.key }键对应的值=${entry.value }<br>
	</c:forEach>
	
	<h1>取出userMap中的数据</h1>
	<c:forEach items="${userMap }" var="entry">
		${entry.key }对应的User对象为:${entry.value }<br>
	</c:forEach>
posted on 2019-06-13 23:14  行之间  阅读(204)  评论(0编辑  收藏  举报