JSP
jsp三个指令,三种注释方法,jsp脚本写java代码三种方式
<!-- page指令 --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- 使用jsp指令导入jstl标签库 --> <!-- taglib指令 --> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!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> <h3>第一行</h3> <!-- include指令 --> <%@include file="part1.jsp" %> <h3>第二行</h3> <h3>第三行</h3> <h3>第四行</h3> </body> <!--Html注释 --> <%--jsp注释 --%> <% //定义变量 java注释 int a=1; int b=2; int c=a+b; %> <!-- 显示数据 --> <%=c %> <!-- 定义java代码(方法) --> <%! public String show(){ return "郑州"; } %> <%=show() %> </html>
jsp被翻译成servlet之后,service方法中有9个对象定义并初始化完毕,我们在jsp脚本中可以直接使用这9个对象
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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> <!-- 改页面上的内容不需要重启服务器 --> <!-- 使用内置对象 --> <!-- uri通用资源定位 --> <% out.write("hello world"); String url=request.getRequestURI();//获取当前请求路径(url) //out.write(url); //response.sendRedirect("part1.jsp");//跳转 String name=config.getServletName(); //out.write(name); //String girlName=config.getInitParameter("girlName"); //out.write(girlName); String girlname=application.getInitParameter("girlName");//jsp中的application就是servletcontext out.write(girlname); %> </body> </html>
四大作用域
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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> <% //pageContext对象(域对象--- request servletContext) //域的作用范围,只在本页面有效 pageContext.setAttribute("name", "花花"); %> <%=pageContext.getAttribute("name") %> <% //pageContext可以向其他域中存取数据(鸡肋----其他对象) //1代表pageContext[当前jsp页面] //2代表request[一次请求] //3代表session[作用返回一次会话间有效 一次会话包含n次请求] //4代表application[整个web生命周期 从项目开始运行到服务器关闭] pageContext.setAttribute("aa", "100", 4); session.setAttribute("bb", 500); %> <%=pageContext.getAttribute("aa", 4)%> <!-- 自动巡航找数据[从小到大域] --> <%=pageContext.findAttribute("bb") %> <% //通过pageContext对象可以获得其他8大对象(别人都是内置对象,为什么要用pageContext获取其他内置对象?(鸡肋)) pageContext.getRequest(); pageContext.getSession(); pageContext.getServletContext(); %> </body> </html>
EL表达式和JSTL
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!--jstl(JSP Standard Tag Library),JSP标准标签库 目的:同el一样也是要代替jsp页面中的脚本代码--> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!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> <!-- el(Express Lanuage)表达式的出现就是为了简化页面脚本使用【脚本格式非常乱,现在不被推介使用】 --> <!-- el最主要的作用是获得四大域中的数据 --> 取request域:<%=request.getAttribute("aaa") %><br> 取request域:${requestScope.aaa}<br> 取request域:${aaa}<br> 取session域:<%=session.getAttribute("bbb") %><br> 取session域:${bbb}<br> 取session域:${sessionScope.bbb}<br> 取application域:<%=application.getAttribute("ccc") %><br> 取application域:${ccc}<br> 取application域:${applicationScope.ccc} <!-- el也支持丰富的表达式操作--> <% String ss=null; Object ob=new Object(); request.setAttribute("ssa", ss); request.setAttribute("oba", ob); %> <br> ${2*9+3} ${empty ssa} ${1==2?"小明":"小红"} <hr> <!-- 需求遍历集合list --> <% List list=new ArrayList(); list.add("中国"); list.add("日本"); list.add("法国"); list.add("泰国"); request.setAttribute("list", list); int age=17; request.setAttribute("myage", age); for(Object item:list){ %> <%=item %> <%}%> <hr> <c:forEach items="${list}" var="aaa"> ${aaa} </c:forEach> <hr> <!-- 要在el表达式里面 里面比较 --> <c:if test="${myage>18}"> 成年 </c:if> </body> </html>