【10 浅学jsp】

本文介绍了JSP的基本概念、执行流程和本质,详细讲解了JSP的语法,包括注释、代码块、表达式和声明。还涉及了JSP指令如page、include和taglib,以及JSP的九大隐式对象中的pageContext。通过一个学生管理系统的登录、添加和查看学生列表的案例,展示了JSP在实际开发中的应用,涉及到Servlet的会话管理和HTTP请求处理。
摘要由CSDN通过智能技术生成

一、jsp

1. jsp介绍

在这里插入图片描述

2. JSP执行流程

在这里插入图片描述

3. JSP的本质还是Servlet

4. JSP语法

4.1 注释

<%–注释格式–%>

4.2 代码块

<% System.out.println(“ssss”);%>

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
  <title>JSP</title>
</head>
<body>
<h1> 第一个jsp 实例ssss </h1>
<%--s--%>
<%--打印到控制台 --%>
<% System.out.println("ssss");%>
<%--输出到页面 out是JSPWriter对象输出到页面上--%>
<% out.println("输出到页面<br>");
String str="你好";
out.println(str);
%>
</body>
</html>

4.3JSP表达式

<%–jsp表达式 相当于 out.println()–%>
<%=“hello” %>

4.4JSP声明

<%! String string=“123”; %>
<%=string%>

5. JSP指令

page 指令

在这里插入图片描述

在这里插入图片描述
错误信息跳转,出现1/0 跳转到error.jsp,只是访问test.jsp会自动跳转到error.jsp
在这里插入图片描述

include 包含指令包含 其他页面

被包含页面,然后访问test.jsp页面会使用包含页面元素

在这里插入图片描述

在这里插入图片描述

taglib 引入外部标签库

在这里插入图片描述

6. JSP细节 九大隐式对象

在这里插入图片描述

6.1 pageContext 页面域对象

在这里插入图片描述

7. Servlet四大域对象小结

在这里插入图片描述

8. MVC模型

在这里插入图片描述

9. 登录&添加学生&查看学生列表案例

首页

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>学生管理系统首页</title>
</head>
<body>

<% Object username = session.getAttribute("username");
    if (username == null) {
%>
<a href="/stu/login.jsp">请登录</a>
<%} else {%>
<a href="/stu/addStudent.jsp">添加学生</a>
<a href="/stu/listStudentServlet">查看学生</a>
<%}%>
</body>
</html>
登录页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>学生登录</title>
</head>
<body>
<form action="/stu/loginServlet" method="get" autocomplete="off">

  用户名: <input type="text" name="username"><br>
  密码:<input type="password" name="password"><br>
    <button type="submit">登录</button>
</form>


</body>
</html>
登录请求处理

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/loginServlet")
public class loginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         //获取用户名和密码
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        //判断用户名
        if (username==null||"".equals(username)){
            //用户名为空 重定向到登录界面
            resp.sendRedirect("/stu/login.jsp");
            return;
        }
        //不为空  存入会话域
        HttpSession session = req.getSession();
        session.setAttribute("username",username);
        //重定向到首页jsp
        resp.sendRedirect("/stu/index.jsp");


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }
}

添加学生页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加学生</title>
</head>
<body>
<form action="/stu/addServlet" method="get" autocomplete="off">

    姓名: <input type="text" name="username"><br>
    年龄:<input type="number" name="age"><br>
    分数:<input type="number" name="score"><br>
    <button type="submit">保存</button>
</form>
</body>
</html>
添加学生请求处理

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

@WebServlet("/addServlet")
public class addStudent extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1. 获取表单数据
        String username = req.getParameter("username");
        String age = req.getParameter("age");
        String score = req.getParameter("score");
        //2. 创建学生对象并赋值
        Student student = new Student(username, Integer.parseInt(age), Integer.parseInt(score));
        //3.将学生对象的数据保存到d:\\stu.txt
        BufferedWriter bw=new BufferedWriter(new FileWriter("d:\\stu.txt",true));
        bw.write(student.getUsername()+","+student.getAge()+","+student.getScore());
        bw.newLine();
        bw.close();
        //4.通过定时刷新功能响应给浏览器
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("添加成功。2秒后自动跳转到首页");
        resp.setHeader("Refresh","2;URL=/stu/index.jsp");




    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }
}
查看学生列表页面
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.example.jsp.Student" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>查看学生</title>
</head>
<body>

<table width="600px" border="1px">
    <tr>
        <th>姓名</th>
        <th>年龄</th>
        <th>成绩</th>

    </tr>
 <%  ArrayList<Student> students= (ArrayList<Student>) session.getAttribute("stus");
   for (Student stu:students ){

 %>
    <tr>
        <td><%=stu.getUsername()%></td>
        <td><%=stu.getAge()%></td>
        <td><%=stu.getScore()%></td>

    </tr>
    <%}%>

</table>

</body>
</html>

列表请求处理

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.ArrayList;


@WebServlet("/listStudentServlet")
public class listStudentServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //1. 创建字符输入流对象 关联读取文件
        BufferedReader br=new BufferedReader(new FileReader("d:\\stu.txt"));
        //2. 创建集合对象 用于保存Student对象
        ArrayList<Student > list=new ArrayList<>();
        //3.循环读取文件中的数据 将数据封装到Student 对象中 再把多个学生对象添加到集合中
        String line;
        while ((line=br.readLine())!=null){
            // 张三 18 100
            Student stu=new Student();
            String[] arr = line.split(",");
            stu.setUsername(arr[0]);
            stu.setAge(Integer.parseInt(arr[1]));
            stu.setScore(Integer.parseInt(arr[2]));
            list.add(stu);

        }

        //4.遍历集合 将数据响应到浏览器
        //获取输出流对象
        resp.setContentType("text/html;charset=UTF-8");
//        PrintWriter pw = resp.getWriter();
//        for (Student s:list){
//            pw.write(s.getUsername()+","+s.getAge()+","+s.getScore());
//            pw.write("<br>");
//        }
        req.getSession().setAttribute("stus",list);
        //5.重定向
        resp.sendRedirect("/stu/list.jsp");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }
}
实体类

public class Student {
  private   String username;
  private   int age;
  private   int score;

    @Override
    public String toString() {
        return "Student{" +
                "username='" + username + '\'' +
                ", age=" + age +
                ", score=" + score +
                '}';
    }

    public Student() {
    }

    public Student(String username, int age, int score) {
        this.username = username;
        this.age = age;
        this.score = score;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青北念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值