JSP
jsp基础语法
<%--
此注解客户端看不见
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--
<% %>: java脚本段,可以定义局部变量,编写语句
<%! %> 声明,可以定义全局(成员)变量,方法,类
<%= %> 表达式,数据一个变量或具体内容
--%>
<%!
String str = "hello";
// str 全局变量
%>
<%
System.out.println(str);
out.print(str);
%>
<%=str
// str全局变量在此使用
%>
</body>
</html>
格式:<%@include file="要包含的页面地址"%>
特点:
将内容进行了直接的替换
静态包含只会生成一个源码文件,最终的内容全部在_jspService方法体中(源码文件中)
不能出现同名变量
运行效率高一点点。耦合性较高,不够灵活。
格式:<jsp:include page="要包含的页面路径"></jsp:include>
特点:
动态包含相当于方法的调用
动态包含会生成多个源码文件
可以定义同名变量
效率高,耦合度低
当动态包含不需要传递参数时,include双标签之间不要有任何内容,包括换行和空格
使用动态包含传递参数

<jsp:include page="要包含的页面路径">
<jsp:param name="参数名" value="参数值"/>
</jsp:include>
注:name属性不支持表达式,value属性支持表示
获取参数:
request.getParameter(name); 通过指定参数名获取参数值
JSP四大域对象
<%--
此注解客户端看不见
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
pageContext.setAttribute("name1","xiao");
request.setAttribute("name2","wang");
session.setAttribute("name3","zheng");
application.setAttribute("name4","tao");
%>
<jsp:forward page="test.jsp"></jsp:forward>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2023/08/28
Time: 10:21
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 获取域对象
out.print(pageContext.getAttribute("name1"));
out.print(request.getAttribute("name2"));
out.print(session.getAttribute("name3"));
out.print(application.getAttribute("name4"));
%>
<%--
page作用域:在当前页面有效,跳转后无效
request作用域:在一次请求中有效,服务端跳转有效,客户端跳转无效
session作用域:在一次会话中有效,服务端和客户端跳转有效
application作用域:在整个应用中有效
jsp跳转方式
<jsp:forward page="test.jsp"></jsp:forward>
--%>
</body>
</html>
EL表达式的使用
EL表达式操作的是域对象不能操作局部变量, 格式:${expression}或者${对象.属性}
如果获取对象为空,默认显示空字符串
范围从小到大依次是本页面-一次请求-一次会话-整个应用程序
EL的查找方式是从小到大查找
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>El表达式</title>
</head>
<body>
<%
request.setAttribute("name","wang");
//一次请求
session.setAttribute("name","zheng");
//一次会话
application.setAttribute("name","tao");
// 整个应用程序
pageContext.setAttribute("name","xiao");
//当前页面
%>
${name}
<%--
结果为: xiao
--%>
</body>
</html>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>El表达式的使用</title>
</head>
<body>
<%
List<String> lis = new ArrayList<>();
lis.add("aaa");
lis.add("bbb");
lis.add("ccc");
request.setAttribute("list",lis);
%>
获取list集合的长度:${list.size()}
</body>
</html>
简单登录
后端
@WebServlet("/login")
public class Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
String username = req.getParameter("username");
String password = req.getParameter("psd");
// 以下为判断参数是否为空
if (username == null ||"".equals(username.trim())){
req.setAttribute("msg","用户名不能为空");
req.getRequestDispatcher("login.jsp").forward(req,resp);
return;
}
if (password == null ||"".equals(password.trim())){
req.setAttribute("msg","用户密码不能为空");
req.getRequestDispatcher("login.jsp").forward(req,resp);
return;
}
// 以下判断用户密码是否正确
if (!"admin".equals(username)|| !"admin".equals(password)){
req.setAttribute("msg","登录失败");
req.getRequestDispatcher("login.jsp").forward(req,resp);
return;
}
req.getSession().setAttribute("username",username);
req.setAttribute("mgs","登录成功");
resp.sendRedirect("index.jsp");
}
}
前端
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="login" method="post">
<label>
用户名:<input type="text" name = "username">
<br>
密码: <input type="password" name="psd">
<br>
<span style="color: crimson;font-size: 18px"><%=request.getAttribute("msg")%></span>
<button>登录</button>
</label>
</form>
</body>
</html>
登录成功页
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>登录成功</title>
</head>
<body>
<h2>欢迎<%= session.getAttribute("username") %>登录!</h2>
</body>
</html>