//JSP脚本:在JSP页面中执行的java代码
<% java代码 %>
//JSP声明:在JSP页面中定义变量或者方法
<%! java代码 %>
//JSP表达式:在JSP页面中执行表达式
<%=java代码 %> //注意: 表达式不以分号结束
九大内置对象中四种作用域范围
① pageContext:只在本页面生效,服务端跳转和客户端超链接跳转无效
② request:只在本页面和服务端跳转生效,客户端超链接跳转无效
③ session:在本页面、服务端跳转、客户端超链接跳转、创建新窗口都生效,关闭浏览器后无效
④ application:在本页面、服务端跳转、客户端超链接跳转、创建新窗口、新浏览器打开都生效,关闭服务器后无效
EL表达式:用pageContext时作用域范围和pageContext一样,用request时作用域范围和request一样,用session时作用域范围和session一样,用application时作用域范围和application一样
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h3>四种作用域范围</h3>
<%
String name = "张三";
//pageContext.setAttribute("name", name);
//request.setAttribute("name", name);
//session.setAttribute("name", name);
application.setAttribute("name", name);
%>
<a href="test.jsp">进入test.jsp</a> <%-- 客户端式访问 --%>
<%-- <jsp:forward page="test.jsp"></jsp:forward> --%> <%-- 服务端式访问 --%>
<br><br>
<%-- pageContext只在本页面生效,服务端跳转和客户端超链接跳转无效<br>
pageContext.getAttribute("name") = <%=pageContext.getAttribute("name")%>
<br><br> --%>
<%-- request只在本页面和服务端跳转生效,客户端超链接跳转无效<br>
request.getAttribute("name") = <%=request.getAttribute("name")%>
<br><br> --%>
<%-- session在本页面、服务端跳转、客户端超链接跳转、创建新窗口都生效,关闭浏览器后无效<br>
session.getAttribute("name") = <%=session.getAttribute("name")%>
<br><br> --%>
application在本页面、服务端跳转、客户端超链接跳转、创建新窗口、新浏览器打开都生效,关闭服务器后无效<br>
application.getAttribute("name") = <%=application.getAttribute("name")%>
<br><br>
EL表达式用pageContext时的效果和pageContext一样,
用request时的效果和request一样,
用session时的效果和session一样,
用application时的效果和application一样<br>
EL表达式 = ${name }
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test页面</title>
</head>
<body>
<h3>四种作用域范围</h3>
<a href="index.jsp">返回index.jsp</a>
<br><br>
<%-- pageContext.getAttribute("name") = <%=pageContext.getAttribute("name") %>
<br><br> --%>
<%-- request.getAttribute("name") = <%=request.getAttribute("name") %>
<br><br> --%>
<%-- session.getAttribute("name") = <%=session.getAttribute("name") %>
<br><br> --%>
application.getAttribute("name") = <%=application.getAttribute("name") %>
<br><br>
EL表达式 = ${name }
</body>
</html>
EL表达式的运算符
== 等价于 eq
!= 等价于 ne
> 等价于 gt
< 等价于 lt
>= 等价于 ge
<=等价于 le
&& 等价于 and
|| 等价于 or
! 等价于 not
客服端跳转方式(重定向)
//客服端端跳转不能访问WEB-INF里面的JSP文件,加 / 时不会自动加上下文路径,不能使用request方式传值带到前端
//方式一(如果要在 index.jsp 前面加 / 就必须要用方式二的方法来获取上下文路径,不然会报404错误)
response.sendRedirect("index.jsp");
//方式二
response.sendRedirect(request.getContextPath() + "/index.jsp");
服务端跳转方式(转发)
//服务端跳转可以访问WEB-INF里面的JSP文件,能使用request方式传值带到前端
request.getRequestDispatcher("index.jsp").forward(request, response);
servlet中解决乱码问题【加在Servlet的doGet和doPost方法里面】
// 输入数据乱码解决:使用request对象获取浏览器提交数据前,先设置字符集
request.setCharacterEncoding("utf-8");
// 输出数据乱码解决:使用request输出数据前,先设置字符集和内容类型
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");