一.JSP
入门
1.什么是JSP
是一种动态网页开发技术。它使用jsp
标签在html
网页中插入java
代码。
<%
Goods szss = new Goods("三只松鼠", "三只松鼠", 100, "三只松鼠,好吃不上火", 1);
Goods yyk = new Goods("优衣库", "优衣库", 10, "优衣库,服适人生", 0);
Goods xm= new Goods("小米", "小米科技有限公司", 100, "为发烧而生", 1);
Goods[] goods= {szss,yyk,xm};
%>
二.JSP
中常用的脚本
1.声明脚本
格式:<%! 声明java
代码%>
作用:可以给JSP
翻译出来的java
类定义属性,方法,静态代码块,内部类等。
特点:不会在浏览器上显示出来,仅存于翻译后的java
类中。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--1.声明类属性--%>
<%!
private String name;
private static Map<String, Object> map;
%>
<%--2.声明类方法--%>
<%!
public int sum() {
return 12;
}
%>
<%--3.声明静态代码块--%>
<%!
static {
map = new HashMap<String, Object>();
map.put("key1", "value1");
}
%>
</body>
</html>
<%!
class Goods{
private String name;
private String company;
private int sort;
private String info;
private int status;
public Goods(String name, String company, int sort, String info, int status) {
this.name = name;
this.company = company;
this.sort = sort;
this.info = info;
this.status = status;
}
public String getName() {
return name;
}
public String getCompany() {
return company;
}
public int getSort() {
return sort;
}
public String getInfo() {
return info;
}
public int getStatus() {
return status;
}
}
%>
2.表达式脚本
格式:<%=表达式%>
作用:在浏览器的JSP
页面上输出数据。
特点:(1).所有表达式脚本都会被翻译到对应的java
类的_jspService()
方法中,故表达式脚本可以直接使用_jspService()
方法参数中的对象。
(2).表达式脚本都会被编译后的Java类的out.print()
方法输出到浏览器页面上
(3).表达式中的脚本不能以分号结束。
<%=22 %> <br/>
<%="可以输出字符串" %> <br/>
<%=map %> <br/>
<%--使用_jspService方法中的对象--%>
<%=request.getParameter("username") %>
<tr>
<td><%=i+1%></td>
<td><%=good.getName()%></td>
<td><%=good.getCompany()%></td>
<td><%=good.getSort()%></td>
<td><%=good.getInfo()%></td>
<td><%=(good.getStatus()==1)?"启用":"禁用"%></td>
<td>修改删除</td>
</tr>
3.代码脚本
格式:<%Java
语句%>
作用:在JSP
页面中可以编写需要的Java
代码。
特点:(1).代码脚本翻译后都在_jspService()
方法中,故代码脚本可以直接使用此方法参数中的对象。
(2).可以有多个代码块脚本块组合完成一个完整的Java
语句。
(3).代码脚本可以和表达式脚本一起组合使用,在JSP
页面上输出数据。
<%--1.if语句--%>
<%
int i = 1;
if (i == 1) {
System.out.println("我爱祖国!");
} else {
System.out.println("我很爱祖国!");
}
%> <br/>
<%--2.for循环语句--%>
<%
for (int j = 0 ; j < 3; j++) {
System.out.println("第" + j + "次循环");
}
%> <br/>
<%--3.使用_jspService方法参数中的对象--%>
<%
String username = request.getParameter("username");
System.out.println("username对应的值为:" + username);
%>
三.JSP
指令
基本格式:<%@ 指令名称 属性名称=“属性值”%>
page
指令:告知容器如何处理当前的JSP
源文件,比如用哪种字符编码来读取JSP
源文件并将其翻译为Servlet
源代码。
language
属性:告知容器采用哪种编程语言解释当前JSP
源文件。pageEncoding
属性:以哪种字符编码翻译当前JSP
.contentType
属性:告知容器将来客户端发送响应数据时使用哪种MIME
类型。
<%@ page contentType="text.html" charset="UTF-8"%>
四.EL
表达式(表达式语言)
作用:获取数据,从域对象中获取数据。
语法:${espression}
${loginUser}
就是获取域中存储的key为loginUser
的数据。
==<%@ page isELIgonred=“false”%>==防止$不被解析
<td>${b.id}</td>
<td>${b.bookTitle}</td>
<td>${b.publicationDate}</td>
<td>${b.author}</td>
<td>${b.price}</td>
<td>${b.quantity}</td>
五.四大域对象
page:当前页面有效
request:当前请求有效
session:当前会话有效
application:当前web应用有效
六.JSTL
标签
使用标签取代JSP
页面上的Java
代码。
使用:(1).导入依赖
(2).在JSP
页面上引入JSTL
标签 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c: if>
:相当于if判断
属性:test,用于定义条件表达式
<C: if test="${1>2}">
错误
</C:if>
<C: forEach>
类似于java
中的for
循环
items
:被遍历的容器var
:遍历产生的临时变量varstatues
:遍历状态对象
<c:forEach items="${book}" var="b" varStatus="state">
<!--index: state.index 从0开始计数-->
<!--count: state.count 从1开始计数-->
<tr>
<td>${b.id}</td>
<td>${b.bookTitle}</td>
<td>${b.publicationDate}</td>
<td>${b.author}</td>
<td>${b.price}</td>
<td>${b.quantity}</td>
<td>
<a href="">修改</a>
<a href="/delete?id=${b.id}" >删除</a>
</td>
</tr>
</c:forEach>