0.准备
在idea上新建一个maven webapp项目,然后在web.xml中添加依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
</dependency>
然后给其配置Tomcat服务器。
1.hello jsp
在webapp下新建一个hello.jsp文件,在其中添加如下代码:
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>hello</title>
<meta charset="UTF-8">
</head>
<body>
<h1>
你好,jsp
</h1>
<%=new Date().toLocaleString()%>
</body>
</html>
2.在jsp页面中写java代码和java表达式
新建一个jspElement.jsp,然后在其中添加如下代码:
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jsp页面元素</title>
<meta charset="UTF-8">
</head>
<body>
<h1>
jsp表达式
<br>
<%="jsp表达式实例"%>
</h1>
<%
List<String> words=new ArrayList<String>();
words.add("1");
words.add("2");
words.add("3");
words.add("4");
%>
<table>
<% for (String word :words){%>
<tr>
<td>
<%=word%>
</td>
</tr>
<%}%>
</table>
</body>
</html>
其中<%%>中间包裹的是java代码,<%=%>中间包裹的是java表达式,<%@%>中间是指令。
3.指令include和动作include
准备一个footer.jsp和footer1.jsp,前者用于验证指令include,后者用于验证动作include。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--footer.jsp--%>
<h1 style="color: red;">
指令include
<%=year%>
</h1>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--动作footer1.jsp--%>
<h1>
动作include
<%=request.getParameter("year1")%>
</h1>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jsp页面元素</title>
<meta charset="UTF-8">
</head>
<body>
<%
int year=2022;
%>
<%@include file="footer.jsp"%>
<jsp:include page="footer1.jsp">
<jsp:param name="year1" value="2021"/>
</jsp:include>
</body>
</html>
执行效果:
指令方式的include是生成一个.java文件,所以参数直接访问即可。动作方式传参是生成两个.java,有传参的需要。
4.jsp的客户端跳转和服务端跳转
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>
跳转
</h1>
<%
response.sendRedirect("jump1.jsp");
%>
<%-- <%--%>
<%-- request.getRequestDispatcher("jump2.jsp").forward(request,response);--%>
<%-- %>--%>
<%--<jsp:forward page="jump2.jsp"></jsp:forward>--%>
</body>
</html>
5.cookie
新建一个setcookie.jsp和getcookie.jsp然后在setcookie中设置cookie的各种参数,并在getcookie中去除cookie的各种参数。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>cookie</title>
<meta charset="UTF-8">
</head>
<body>
<h1>
cookie
</h1>
<%
Cookie c=new Cookie("name","green");
c.setPath("/");
c.setMaxAge(24*60*60);
response.addCookie(c);
%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>getCookie</title>
</head>
<body>
<%
Cookie[] cookies=request.getCookies();
if(cookies!=null){
for(int i=0;i<cookies.length-1;i++){
out.print(cookies[i].getName()+":"+cookies[i].getValue()+"<br>");
}
}
%>
</body>
</html>
运行效果如下:
setCookie
getCookie
6.session
创建两个jsp,分别是setSession和getSession,在setSession中设置session并跳转到getSession,在getSession中取出session的各种参数。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>session</title>
<meta charset="UTF-8">
</head>
<body>
<%
session.setAttribute("name","zhangsan");
%>
<a href="getSession.jsp">
jsp跳转
</a>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>session</title>
<meta charset="UTF-8">
</head>
<body>
<%
String name=(String) session.getAttribute("name");
%>
<h1>
name的值为:<%=name%>
</h1>
</body>
</html>
7.jsp的作用域
pageContext:一个页面
request:一次请求
session:一次会话
application:全局