javaweb--实验六 JSP基本语法--期末复盘

实验六 JSP基本语法

需要资料的文章末尾自提

一、实验目的:

1、掌握JSP的基本用法。
2、理解JSP和Servlet的分工。

二、实验内容:

设计如下图所示的页面。单击某一行的“删除”链接,则删除该行对应的用户数据。
在这里插入图片描述

【实验步骤】

(1)新建一个名为”web6”的项目(Web应用程序)。在项目中,新建“it.entity“包,在包中新建名为”User”的java类。

package it.entity;
//用户类
public class User {
    
    
    private String sno;
    private String name;
    private int age;    
    private String gender;

    public User(String sno, String name, int age, String gender) {
    
    
        this.sno = sno;
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getSno() {
    
    
        return sno;
    }

    public void setSno(String sno) {
    
    
        this.sno = sno;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

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

    public String getGender() {
    
    
        return gender;
    }

    public void setGender(String gender) {
    
    
        this.gender = gender;
    } 
    
}

(2)新建JSP,命名为“users”。users.jsp文件用于展示用户的基本信息。

<%@page import="java.util.*"%>
<%@page import="it.entity.User"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>用户信息管理</title>
</head>
<body>
<div align="center">
    <h1>用户信息管理</h1>
    <%
        //application为ServletContext对象,即代表当前web应用
        List<User> users = (List<User>) application.getAttribute("users");
        //当网站中没有users全局变量时,创建users对象,包含初始的用户信息
        if (users == null) {
    
    
            users = new ArrayList<>();
            users.add(new User("990001", "张三", 12, "女"));
            users.add(new User("990002", "李四", 12, "男"));
            users.add(new User("990003", "王五", 12, "女"));
            users.add(new User("990004", "赵六", 12, "男"));
            users.add(new User("990005", "小七", 12, "男"));
            application.setAttribute("users",users);
        }
    %>
    <table border="1px" width="90%" >
        <tr><th width="15%">编号</th>
            <th  width="15%">学号</th>
            <th width="15%">姓名</th>
            <th width="15%">年龄</th>
            <th width="15%">性别</th>
            <th width="25%">操作</th>
        </tr>
        <%
            int rowNum = 0;//行编号
            for (User user : users) {
    
    
                rowNum++;
                //【代码一】为sno、name、age、gender赋值

                
                String deleteLink = "delete?index=" + (rowNum-1);
        %>
        <tr style="text-align: center">
            <td ><%= rowNum%></td>
            <td><%= sno%></td>
            <td><%= name%></td>
            <td><%= age%></td>
            <td><%= gender%></td>
            <!--点击“删除”链接,使用javascript脚本弹出确认对话框,单击“确定”后,才执行删除操作-->
            <td>
                <a href="<%=deleteLink%>" onClick="return confirm('您确定要删除吗?请确认');">删除</a>
            </td>
        </tr>
        <%
            }
        %>
    </table>
</div>
</body>
</html>

(3)新建“it.servlet”包,在包中新建名为“DeleteServlet”的Java类。DeleteServlet.java文件用于删除一条用户信息。

package it.servlet;

import it.entity.User;
import java.io.IOException;
import java.util.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

@WebServlet("/delete")
public class DeleteServlet extends HttpServlet {
    
    

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
         /*【代码二】
		1、	如果从地址栏直接访问本资源时,则重定向到users.jsp;
		2、	否则,执行用户的删除:
		(1)从ServletContext对象中获取全局变量users的值
        (2)通过req变量,获取被删除的用户的下标值。
			将字符串转换为整型的方法为:int  Integer.parseInt(String s);
        (3)根据下标删除用户
	    (4)重定向到users.jsp页面。
			 resp.sendRedirect("users.jsp");
       */ 
         
        }
    }
}

三、具体实现

<%@page import="java.util.*"%>
<%@page import="it.entity.User"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>用户信息管理</title>
</head>
<body>
<div align="center">
    <h1>用户信息管理</h1>
    <%
        //application为ServletContext对象,即代表当前web应用
        List<User> users = (List<User>) application.getAttribute("users");
        //当网站中没有users全局变量时,创建users对象,包含初始的用户信息
        if (users == null) {
    
    
            users = new ArrayList<>();
            users.add(new User("990001", "张三", 12, "女"));
            users.add(new User("990002", "李四", 12, "男"));
            users.add(new User("990003", "王五", 12, "女"));
            users.add(new User("990004", "赵六", 12, "男"));
            users.add(new User("990005", "小七", 12, "男"));
            application.setAttribute("users",users);
        }
    %>
    <table border="1px" width="90%" >
        <tr><th width="15%">编号</th>
            <th  width="15%">学号</th>
            <th width="15%">姓名</th>
            <th width="15%">年龄</th>
            <th width="15%">性别</th>
            <th width="25%">操作</th>
        </tr>
        <%
            int rowNum = 0;//行编号
            for (User user : users) {
    
    
                rowNum++;
                //【代码一】为sno、name、age、gender赋值
String sno = user.getSno();//学号
                String name = user.getName();//姓名
                int age = user.getAge();//年龄
                String gender = user.getGender();//性别
                
                String deleteLink = "delete?index=" + (rowNum-1);
        %>
        <tr style="text-align: center">
            <td ><%= rowNum%></td>
            <td><%= sno%></td>
            <td><%= name%></td>
            <td><%= age%></td>
            <td><%= gender%></td>
            <!--点击“删除”链接,使用javascript脚本弹出确认对话框,单击“确定”后,才执行删除操作-->
            <td>
                <a href="<%=deleteLink%>" onClick="return confirm('您确定要删除吗?请确认');">删除</a>
            </td>
        </tr>
        <%
            }
        %>
    </table>
</div>
</body>
</html>
package it.servlet;

import it.entity.User;
import java.io.IOException;
import java.util.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

@WebServlet("/delete")
public class DeleteServlet extends HttpServlet {
    
    

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
         /*【代码二】
1、	如果从地址栏直接访问本资源时,则重定向到users.jsp;
2、	否则,执行用户的删除:
(1)从ServletContext对象中获取全局变量users的值
        (2)通过req变量,获取被删除的用户的下标值。
			将字符串转换为整型的方法为:int  Integer.parseInt(String s);
        (3)根据下标删除用户
	    (4)重定向到users.jsp页面。
			 resp.sendRedirect("users.jsp");
       */ 
          // 检查请求来源
        String referer = req.getHeader("Referer");
        if (referer != null && referer.endsWith("/users.jsp")) {
    
    
            // 请求来自合法来源,直接处理删除操作
            ServletContext servletContext = getServletContext();
            List<User> users = (ArrayList<User>) servletContext.getAttribute("users");

            // 直接处理删除操作,不再检查参数存在和越界
            String indexParam = req.getParameter("index");
            if (indexParam != null) {
    
    
                int index = Integer.parseInt(indexParam);
                users.remove(index);
            }
            resp.sendRedirect("users.jsp");  // 重定向到users.jsp页面
        } else {
    
    
            // 请求来自非法来源,重定向回users.jsp
            resp.sendRedirect("users.jsp");
        }
    }
}

四、资料自提

链接:https://pan.baidu.com/s/1ifszJdUmR_7_2hnER3yNLw?pwd=xzgr
提取码:xzgr

猜你喜欢

转载自blog.csdn.net/qq_52495761/article/details/134603148