JSP
1.jsp基础语法
-
JSP头元素 模块
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-
JSP表达式
意义:JSP脚本表达式用于将程序输出到客户端
语法:<%= 变量或者表达式%>
举例:
<%= new Date()%>
注意:1.jsp引擎再翻译脚本表达式时,将程序数据转换成字符串,然后再响应位置用out.print(…)将数据给客户端
2.变量或者表达式后不能加分号;
-
JSP脚本片段
再片段里可以写多行Java代码
语法:<% Java代码 %>
举例:
<% int sum=0; for (int i=1;i<=100;i++){ sum+=i; } out.println("<h1>Sum="+sum+"</h1>"); %>
注意:
- jsp脚本片段只能出现Java代码,不能出现其他的,jsp引擎翻译jsp页面时,会将片段中的Java代码原封不动的放在Servlet中的_jspService方法里
- 在<% %>里只能定义变量 编写语句,不可定义方法
- 在jsp页面中可以有多个脚本片段,在两个或多个片段之间可以前导文本 html或其他jsp元素
- 多个片段的代码可以相互访问
-
JSP声明
jsp页面中编写的所有代码,默认会翻译到servlet中的service()方法里,而就是怕声明的Java代码放到_jspService()里面
语法: <%! Java代码 %>
举例:
<%! static { System.out.println("loading Servlet!"); } private int globalVar = 0; public void jspInit(){ System.out.println("initializing jsp!"); } %> <%! public void jspDestroy(){ System.out.println("destroying jsp!"); } %>
注意:
- 多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。
- JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。
附加:
自定义404和500页面
在当前项目的web.xml添加如下代码
<!-- 1.配置404页面 -->
<error-page>
<error-code>404</error-code>
<location>/error/4041.jsp</location>
</error-page>
<!-- 2.配置500错误页面-->
<error-page>
<error-code>500</error-code>
<location>/error/500.jsp</location>
</error-page>
2. JSP指令
网页常见的顶部和底部信息的实现
方式一:
<%@include file="common/header.jsp"%>
<h1>网页主体</h1>
<%@include file="common/footer.jsp"%>
弊端:这种方法是拼接到一个网页,本质相当于是一个网页,变量不可重名
方式而:
<jsp:include page="/common/header.jsp"/>
<h1>网页主体</h1>
<jsp:include page="/common/footer.jsp"/>
总结:常用的是第二种方式 jsp:include:拼接页面,本质还是三个
3. 九大内置对象及作用域
-
PageContext
-
Request
-
Session
-
Response
-
Application
-
config
-
out
-
page
-
exception
作用:存放数据 eg:
pageContext.setAttribute("name1","小杭1"); //保存的数据旨在一个页面有效 request.setAttribute("name2","小杭2"); //在一次请求有效,请求转发会携带这个数据 session.setAttribute("name3","小杭3"); //一次会话中有效 从打开浏览器到关闭浏览器 application.setAttribute("name4","小杭4"); // 在服务器中有效,打开服务器到关闭服务器
取出数据(使用EL表达式会更加方便):
String name1 =(String) pageContext.findAttribute("name1"); String name2 =(String) pageContext.findAttribute("name2"); String name3 =(String) pageContext.findAttribute("name3"); String name4 =(String) pageContext.findAttribute("name4"); String name5 =(String) pageContext.findAttribute("name5");
4. EL表达式,jsp jstl标签
需要在Maven导包
<!-- 1.添加jsp需要的依赖-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
<!-- 2.到jstl的包-->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<!-- 3.JSTL标签库依赖-->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
-
EL表达式 ${ }
- 获取数据
- 执行运算
- 获取web开发常用对象
-
JSP标签
<% request.setCharacterEncoding("utf-8");%> //设置编码防止乱码 <jsp:forward page="jsptag2.jsp"> <jsp:param name="name" value="小杭"/> <jsp:param name="age" value="20"/> </jsp:forward>
取出数据
<%= request.getParameter("name")%> <%= request.getParameter("age")%>
-
JSTL表达式
作用:就是为了弥补HTML标签的不足
核心标签
使用前必须引入核心标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
EL表达式获取表单的数据
${ parm. 参数名}
when判断小案例 ,输入成绩判断等级
<form action="corewhen.jsp" method="post"> <%--EL表达式获取表单的数据 ${param.参数名}--%> <input type="text" name="score" value="${param.score}"> <input type="submit" value="提交"> </form> <%--when判断--%> <c:choose> <c:when test="${param.score>=90 && param.score <= 100}"> 优秀 </c:when> <c:when test="${param.score>=80 && param.score<90}"> 良好 </c:when> <c:when test="${param.score>=60 && param.score<80}"> 中等 </c:when> <c:when test="${param.score>=0 && param.score<60}"> 不及格 </c:when> <c:when test="${param.score<0}"> 输入错误!成绩范围[0,100] </c:when> </c:choose>
for Each遍历数组
<% int arr[] = {1,2,3,4,5,6}; request.setAttribute("array",arr); //把这个数组存放在Request %> <%-- begin代表下标为多少开始遍历,end下标为多少结束 step 步长代表for里的i++ --%> <c:forEach var="arr" items="${array}" begin="2" end="4" step="1"> <c:out value="${arr}"/> <br> </c:forEach>
格式化标签
SQL标签
XML标签
-
5. JavaBean
JavaBean是一个实体类(对应包名可以表示为com.wei.entity) ,一般是用来和数据库的字段做映射,ORM 有固定的写法
- 必须要有一个无参构造
- 属性必须私有化
- 必须有对应的get/set方法
ORM: 对象关系映射
- 表 ----->类
- 字段 ----->属性
- 行记录 ----->对象