目录

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>
  1. 格式:<%@include file="要包含的页面地址"%>
  2. 特点:
    1. 将内容进行了直接的替换
    2. 静态包含只会生成一个源码文件,最终的内容全部在_jspService方法体中(源码文件中)
    3. 不能出现同名变量
    4. 运行效率高一点点。耦合性较高,不够灵活。
  1. 格式:<jsp:include page="要包含的页面路径"></jsp:include>
  2. 特点:
    1. 动态包含相当于方法的调用
    2. 动态包含会生成多个源码文件
    3. 可以定义同名变量
    4. 效率高,耦合度低
    5. 当动态包含不需要传递参数时,include双标签之间不要有任何内容,包括换行和空格
    6. 使用动态包含传递参数 :?:
<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表达式的使用

  1. EL表达式操作的是域对象不能操作局部变量, 格式:${expression}或者${对象.属性}
  2. 如果获取对象为空,默认显示空字符串
  3. 范围从小到大依次是本页面-一次请求-一次会话-整个应用程序
  4. 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>