登录和修改(JSP)

通过案例学习jsp的常用知识点:

1.创建一个Map集合,用于存放学生信息,将学生信息存入Map中

2.通过page将需要的包导入

3.用request.getParameter通过name得到输入框的内容
4.session生命周期在整个会话期间,整个会话中都可以得到session中存放的信息,可以用于存放登录学生的学号,使每个页面都可以得到学号
5.application生命周期在整个web容器的生命期间,可以用于记录此项目的浏览人数,可以得到application中存放的数据
6. 点击修改,将所点击的学生信息传给另一个页面

package entity;

public class Student {
private String sno;//学号
private String password;//密码
private String name;//姓名
//构造函数
public Student(String sno, String password, String name) {
this.sno = sno;
this.password = password;
this.name = name;
} public String getSno() {
return sno;
} public void setSno(String sno) {
this.sno = sno;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
package util;

import entity.Student;

import java.util.HashMap;

public class StudentUtil {

    //创建一个Map集合,用于存放学生信息

    public static HashMap<String, Student> map=new HashMap<String, Student>();

    static{

        //向集合中传入信息

        map.put("101",new Student("101","123","lili"));

        map.put("102",new Student("102","123","lisa"));

        map.put("103",new Student("103","123","coco"));

    }

    /**

     * 用于检测登录时用户输入的账户和密码

     * @param stu

     * @return 返回布尔类型的数据

     */

    public static boolean login(Student stu){

        boolean b=false;

        for(String s:map.keySet()){

            if(map.get(s).getSno().equals(stu.getSno())&&map.get(s).getPassword().equals(stu.getPassword())){

                b=true;

                break;

            }

        }

        return b;

    }

}

index.jsp

<%--

  Created by IntelliJ IDEA.

  User: Administrator

  Date: 2019/7/22 0022

  Time: 上午 9:04

  To change this template use File | Settings | File Templates.

--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

    <title>Title</title>

    <style>

        .log{

            align-content: center;

            text-align: center;

        }

    </style>

</head>

<body>

<!--登录页面-->

<form action="loginController.jsp" method="post">

    <div class="log">

    <h3>登录</h3>

    学号:<input type="text" name="sno"/></br>

    密码:<input type="password" name="password"/></br>

    <input type="submit" value="确定"/></div>

</form>

</body>

</html>

loginController.jsp

<%@ page import="util.StudentUtil" %><%--

  Created by IntelliJ IDEA.

  User: Administrator

  Date: 2019/7/22 0022

  Time: 上午 9:04

  To change this template use File | Settings | File Templates.

--%>

<%@ page contentType="text/html;charset=UTF-8" language="java"  errorPage="error.jsp" %>

<!--通过page将需要的包导入 -->

<%@page import="entity.Student" %>

<%@page import="util.StudentUtil" %>

<%@ page import="javafx.application.Application" %>

<html>

<head>

    <title>Title</title>

    <style>

        table{

            align-content: center;

            text-align: center;

            width: 500px;

            height: 200px;

            border: 2px solid #8ea4ff;

        }

        tr,td{

            border: 2px solid #8ea4ff;

        }

    </style>

</head>

<body>

<%

    String sno=request.getParameter("sno");//用request.getParameter通过name得到输入框的内容

    String password=request.getParameter("password");

    Student stu=new Student(sno,password,null);//创建一个Student对象

    boolean b=StudentUtil.login(stu);//调用StudentUtil的login方法检测学号和密码

    if(b){

        //session生命周期在整个会话期间,整个会话中都可以得到session中存放的信息

        //此处用于存放登录学生的学号,使每个页面都可以得到学号

        session.setAttribute("count",sno);

        //application生命周期在整个web容器的生命期间

        //此处用于记录此项目的浏览人数

        //得到application中存放的数据

        Object o= application.getAttribute("num");

        if(o==null){//如果application中没有数据,则向application中存入1

            application.setAttribute("num",1);

        }else{

            //如果application中已经存在数据,则存放的数据加1

            int num=Integer.parseInt(o.toString());

            application.setAttribute("num",num+1);

        }

%>

<h2>学生信息</h2>

<h3 style="text-align: right">登录账号:<%=session.getAttribute("count")%></h3>

<h3 style="text-align: right">浏览量:<%=application.getAttribute("num")%></h3>

<hr>

<table>

    <tr>

        <td>学号</td>

        <td>密码</td>

        <td>姓名</td>

        <td></td>

    </tr>

    <%

        for(Student st:StudentUtil.map.values()){

    %>

    <tr>

        <td><%=st.getSno()%></td>

        <td><%=st.getPassword()%></td>

        <td><%=st.getName()%></td>

        <!--点击修改,将所点击的学生信息传给另一个页面-->

        <td><a href="update.jsp?sno=<%=st.getSno()%>&&password=<%=st.getPassword()%>&&name=<%=st.getName()%>">修改</a></td>

    </tr>

    <%}%>

</table>
<%}else{
//抛出异常
throw new Exception("账户或密码错误");
}%>
</body> </html>
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019/7/22 0022
Time: 下午 5:10
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%=exception.getMessage()%>
</body>
</html>

update.jsp

<%--

  Created by IntelliJ IDEA.

  User: Administrator

  Date: 2019/7/22 0022

  Time: 上午 10:10

  To change this template use File | Settings | File Templates.

--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

    <title>Title</title>

    <style>

        table{

            width: 400px;

            height: 150px;

            border:2px solid #8ea4ff;

            text-align: center;

        }

        tr,td{

            border:2px solid #8ea4ff;

        }

    </style>

</head>

<body>

<h3 style="text-align: right">登录账号:<%=session.getAttribute("count")%></h3>

<form action="updateController.jsp" method="post">

    <h2>修改信息</h2>

    <hr>

<table>

    <tr>

        <td style="width: 30%">

            学号

        </td>

        <td><input type="text" name="sno" value="<%=request.getParameter("sno")%>"></td>

    </tr>

    <tr>

        <td>

            密码

        </td>

        <td><input type="text" name="password" value="<%=request.getParameter("password")%>"></td>

    </tr>

    <tr>

        <td>

            姓名

        </td>

        <td><input type="text" name="name" value="<%=request.getParameter("name")%>"></td>

    </tr>

</table>

<input type="submit" value="确定">

</form>

</body>

</html>

updateController.jsp

<%--

  Created by IntelliJ IDEA.

  User: Administrator

  Date: 2019/7/22 0022

  Time: 上午 10:18

  To change this template use File | Settings | File Templates.

--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@page import="entity.Student" %>

<%@page import="util.StudentUtil" %>

<html>

<head>

    <title>Title</title>

    <style>

        table{

            align-content: center;

            text-align: center;

            width: 500px;

            height: 200px;

            border: 2px solid #8ea4ff;

        }

        tr,td{

            border: 2px solid #8ea4ff;

        }

    </style>

</head>

<body>

<%

    String sno=request.getParameter("sno");

    String password=request.getParameter("password");

    String name=request.getParameter("name");

    for(String s:StudentUtil.map.keySet()){//遍历map中所有的键

        if(StudentUtil.map.get(s).getSno().equals(sno)){

            StudentUtil.map.get(s).setSno(sno);

            StudentUtil.map.get(s).setPassword(password);

            StudentUtil.map.get(s).setName(name);

        }

    }

%>

修改成功!

<h2>学生信息</h2>

<h3 style="text-align: right">登录账号:<%=session.getAttribute("count")%></h3>

<hr>

<table>

    <tr>

        <td>学号</td>

        <td>密码</td>

        <td>姓名</td>

        <td></td>

    </tr>

    <%

        for(Student st:StudentUtil.map.values()){

    %>

    <tr>

        <td><%=st.getSno()%></td>

        <td><%=st.getPassword()%></td>

        <td><%=st.getName()%></td>

        <td><a href="update.jsp?sno=<%=st.getSno()%>&&password=<%=st.getPassword()%>&&name=<%=st.getName()%>">修改</a></td>

    </tr>

    <%}%>

</table>

</body>

</html>
 

Java项目案例之---登录和修改(JSP)的更多相关文章

  1. Java项目案例之--封装的实例

    Java项目案例之---封装的实例 有一个专业类,有一个专业对象,专业名称:计算机科学与技术,专业编号:J001,专业年限:4,对年限添加约束,如果输入小于0,则默认为0,否则显示输入的值 有一个学生 ...

  2. Java Web项目案例之---登录注册和增删改查(jsp+servlet)

    登录注册和增删改查(jsp+servlet) (一)功能介绍 1.用户输入正确的密码进行登录 2.新用户可以进行注册 3.登录后显示学生的信息表 4.可以添加学生 5.可以修改学生已有信息 6.可以删 ...

  3. Java Web项目案例之---登录和注册(精华版)

    登录和注册(精华版) (一)实现功能 1.使用cookie记录登录成功的用户名,用户选择记住用户名,则用户再次登录时用户名自动显示 2.实现文件上传功能(上传文件的表单上传于普通的表单上传不同,必须是 ...

  4. Java项目案例之---加法计算器(转发和重定向)

    加法计算器(转发和重定向) 运行显示: 转发 重定向 代码: index.jsp <%-- Created by IntelliJ IDEA. User: Administrator Date: ...

  5. Java项目案例:酒店前台客服管理系统

    import java.util.Scanner; public class HelloWorld { public static void main(String[] args){ String [ ...

  6. Java项目案例之---开灯(面向对象复习)

    开灯(面向对象复习) 设计一个台灯类(Lamp)其中台灯有灯泡类(Buble)这个属性,还有开灯(on)这个方法 设计一个灯泡类(Buble),灯泡类有发亮的方法 其中有红灯泡类(RedBuble)和 ...

  7. Java项目案例之---计算公司员工的工资(面向对象复习)

    计算公司员工的工资(面向对象复习) 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份.方法:double getSalary(int month) ...

  8. Java项目案例之---常用工具类练习

    常用工具类练习 1. 请根据控制台输入的特定日期格式拆分日期,如:请输入一个日期(格式如:**月**日****年),经过处理得到:****年**月**日 import java.util.Scanne ...

  9. Java项目案例之---定时器的使用

    定时器的使用 使用定时器,在当前时间的10秒后调用方法,输出语句 import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

随机推荐

  1. Q_DECLARE_METATYPE(继承QObject的类都已经自动注册),注册后的类型可以作为QVariant的自定义类型

    简介 这个宏用来注册一个类(含默认构造.默认析构.拷贝构造函数)为QMetaType类型 ,注册后的类型可以作为QVariant的自定义类型. 这个宏应该放在类或者结构体外面的下面,也可以放在一个非公 ...

  2. Natively Compiled Code: A Comeback?

    RAD Studio and Natively Compiled Code In today's development landscape, natively compiled code is ma ...

  3. OpenGL与Directx的区别

    OpenGL 只是图形函数库. DirectX 包含图形, 声音, 输入, 网络等模块. 单就图形而论, DirectX 的图形库性能不如 OpenGL OpenGL稳定,可跨平台使用.但 OpenG ...

  4. YxdIocp包含有支持大并发的TCP服务组件、HTTP服务组件、UDP服务组件、WebSocket服务组件

    Delphi Windows IOCP 通讯模型封装,基于DIOCP.YxdIocp包含有支持大并发的TCP服务组件.HTTP服务组件.UDP服务组件.WebSocket服务组件,和TCP.UDP等基 ...

  5. MJPhotoBrowser 用法

    一.使用方法:   #import "MJPhotoBrowser.h" #import "MJPhoto.h"   - (void)tapPhoto:(UIT ...

  6. 使用Func<T1, T2, TResult> 委托返回匿名对象

    Func<T1, T2, TResult> 委托 封装一个具有两个参数并返回 TResult 参数指定的类型值的方法. 语法 public delegate TResult Func< ...

  7. 解决vuejs 创建数据后设置对象的属性实现不了双向绑定问题

    抛出踩坑:vue创建后的数据,自定义设置对象的属性,实现不了双向绑定 当业务场景,需要在请求接口数据新增自定义的属性 let foodList = [ {title: '回锅肉', price: 99 ...

  8. 重定向Redirect 的知识

    今天下班的时候看到了一些重定向的基础知识,也算开了眼界.以前也经常使用301和302,但从来没有使用过和了解过其他的3XX的状态码,发现原来里面涉及的知识和解决的问题的还不少. 重定向的流程 浏览器首 ...

  9. 使用wireshark抓包分析-抓包实用技巧

    目录 使用wireshark抓包分析-抓包实用技巧 前言 自定义捕获条件 输入配置 输出配置 命令行抓包 抓取多个接口 抓包分析 批量分析 合并包 结论 参考文献 使用wireshark抓包分析-抓包 ...

  10. win2008环境mysql主从配置

    一.主库相关配置.设置 step1:主库配置文件 [mysqld] # 数据库id,唯一 server-id = 1# 二进制日志文件,必填项,否则不能同步数据;如果不取名字的话,会以计算机的名字加编 ...