JSP连接数据库进行注册登录及展示页面及下拉框查询

思路:在进入展示页面时 可以进行查询数据库 并展示出来再进行下拉框的构造

先写出dao层的接口

int insert(String username,String password,int age);

/**
 *
 * @param username   用户名
 * @param password    密码
 * @return   查询的数据
 */
User queryByUsernameAndPassword(String username,String password);

/**
 *
 * @param age  年龄
 * @return  查询的集合
 */
List<User> queryByAge(int age);

/**
 *
 * @return  全部年龄
 */
Set<Integer> queryAllage();

再进行dao层实现

@Override
public int insert(String username, String password, int age) {
    // 通过工具类获取连接对象 connection
    Connection connection = BaseDao.getConnection();
    // 插入的sql语句
    String sql = "insert into user (username,password,age) values (?,?,?)";// sql insert语句
    PreparedStatement statement = null;  //定义一个statement为null
    int i = -1;   //定义一个i初始值为-1
    try {
        //获取statement对象
        statement = connection.prepareStatement(sql);
        statement.setString(1,username); //第一个占位符为注册界面输入的username
        statement.setString(2,password); //第二个占位符为 注册界面输入的password
        statement.setInt(3,age); // 第三个占位符为 注册界面输入的age
        i = statement.executeUpdate();   //受影响行数 为 i
    } catch (SQLException throwables) {
        throwables.printStackTrace();
    }
    return i;  //返回一个受影响受影响行数
}

@Override
public User queryByUsernameAndPassword(String username, String password) {
    // 通过工具类获取连接对象 connection
    Connection connection = BaseDao.getConnection();
    // 插入的sql语句
    String sql = "select id,username,password,age from user where username=? and password=?";
    PreparedStatement statement = null;
    ResultSet resultSet = null;
    User user = null;

    try {
        //获取statement对象
        statement = connection.prepareStatement(sql);
        statement.setString(1,username);
        statement.setString(2,password);
        resultSet = statement.executeQuery();
        if (resultSet.next()){
            int id = resultSet.getInt(1);
            String uname = resultSet.getString(2);
            String pw = resultSet.getString(3);
            int age = resultSet.getInt(4);
            user = new User(id, uname, pw, age);
        }
    } catch (SQLException throwables) {
        throwables.printStackTrace();
    }
    return user;
}

@Override
public List<User> queryByAge(int age) {
    // 通过工具类获取连接对象 connection
    Connection connection = BaseDao.getConnection();
    // 插入的sql语句
    String sql = "select id,username,password,age from user where age=?";
    if(age==-1){
        sql = sql + " or 1=1";
    }
    PreparedStatement statement = null;
    ResultSet resultSet = null;
    ArrayList<User> list = new ArrayList<>();
    try {
        //获取statement对象
        statement = connection.prepareStatement(sql);
        statement.setInt(1,age);
        resultSet = statement.executeQuery();
        while (resultSet.next()){
            int id = resultSet.getInt(1);
            String uname = resultSet.getString(2);
            String pw = resultSet.getString(3);
            int age1 = resultSet.getInt(4);
            User user = new User(id, uname, pw, age1);
            list.add(user);
        }
    } catch (SQLException throwables) {
        throwables.printStackTrace();
    }
    return list;
}

@Override
public Set<Integer> queryAllage() {
    // 通过工具类获取连接对象 connection
    Connection connection = BaseDao.getConnection();
    // 插入的sql语句
    String sql = "select age from user";

    PreparedStatement statement = null;
    ResultSet resultSet = null;
    Set<Integer> set = new HashSet<>();
    try {
        //获取statement对象
        statement = connection.prepareStatement(sql);
        resultSet = statement.executeQuery();
        while (resultSet.next()){
            int age = resultSet.getInt(1);
            set.add(age);
        }
    } catch (SQLException throwables) {
        throwables.printStackTrace();
    }
    return set;
}

写视图层的接口

boolean register(String username,String password,int age);

User queryByUsernameAndPassword(String username,String password);

List<User> queryByAge(int age);

Set<Integer> queryAllage();

写视图层的实现类

private IUserDao userDao =  new UserDaoImpl(); 
@Override
public boolean register(String username, String password, int age) {
    int insert = userDao.insert(username,password,age);
    return insert>0;
}

@Override
public User queryByUsernameAndPassword(String username, String password) {
    return userDao.queryByUsernameAndPassword(username,password);

}

@Override
public List<User> queryByAge(int age) {
    return userDao.queryByAge(age);
}

@Override
public Set<Integer> queryAllage() {
    return userDao.queryAllage();
}

写注册的界面

<%-- Created by IntelliJ IDEA. --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册页面</title>
</head>

<style>
    body {
        background-image: url("壁纸 (2).jpg");
        background-size: cover;
        background-position-x: center;
    }
    .layout { /*设置登录窗口部分的样式*/
        width: 900px;
        height: 530px;

        position: relative;
        box-sizing: border-box;
        margin-left: 190px;
        margin-top: 110px;
        padding: 1px;

        border: 8px solid silver;
        border-radius: 2px;
        background-image: url("壁纸 (2).jpg");
        background-size: 1300px;
        background-position-x: center;
        background-position-y: -125px;

        z-index: 1;
    }

    .layout::after { /*设置背景虚图层*/
        content: "";
        position: absolute;
        width: 100%;
        height: 100%;
        background: inherit;
        left: 0;
        top: 0;
        filter: blur(5px);
        z-index: 2;
    }

    .input { /*登录条框布局*/
        margin-top: 160px;
        margin-left: 250px;
        margin-right: 250px;
    }

    .input-group { /*调节账号和密码框图层*/
        position: relative;
        z-index: 3;
    }

    .input-group { /*调节两个输入框的之间距离*/
        padding: 15px;
    }

    button { /*设置登录按钮的图层分布和位置*/
        position: relative;
        z-index: 3;
        margin-top: 15px;
        margin-left: 120px;
    }

    .submit-default { /*设置登录按钮边界弧度*/
        border-radius: 5px;
    }

    .bz { /*火焰图标*/
        position: absolute;
        z-index: 3;
        font-size: 40px;
        margin-left: 405px;
        margin-top: 89px;
    }

    #注册 { /*注册超链接的设置*/
        position: absolute;
        z-index: 3;
        color: #222222;
        margin-top: 15px;
        margin-left: 725px;
    }

</style>
<body>
<div class="layout">
    <div id="注册">
        <span>已有用户</span><a href="login.jsp">立即登录</a>
    </div>
    <div class="bz"><span style="color: #22ffb9; ">&nbsp;</span>
        <span class="glyphicon glyphicon-fire" aria-hidden="true"
              style="size: 50px"></span></div>
    <div class="input">
        <form action="regService.jsp" method="post">
            <div class="input-group">
               账&nbsp;号:&nbsp;<input type="text" name="username">
            </div>

            <div class="input-group">
                密&nbsp;码:&nbsp;<input type="password" name="password"><br>
            </div>
            <div class="input-group">
                年&nbsp;龄:&nbsp;<input type="number" name="age"><br>
            </div>
            <div class="input-group">
                <input type="submit" style="display:block;margin:10px 100px auto" value="注册"  ><br>
            </div>
        </form>
    </div>
</div>
</body>
</html>

写注册的后台逻辑

<%
    //解决乱码
 request.setCharacterEncoding("utf-8");
    String username = request.getParameter("username"); //接收注册输入的账号密码年龄
    String password = request.getParameter("password");
    int age = Integer.parseInt(request.getParameter("age"));
    IUserService userService = new UserServicelmpl();
      boolean  register = userService.register(username, password, age);   //受影响行数
    if(register){  //如果受影响行数不为空
         request.setAttribute("into","注册成功");
   request.getRequestDispatcher("login.jsp").forward(request,response);
     }else {
         request.setAttribute("info","注册失败");
         request.getRequestDispatcher("register.jsp").forward(request,response);
     }
%>

写登录页面  (这是我优化后的登录界面)

<%-- Created by IntelliJ IDEA. --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录界面</title>
</head>

<style>
    body {
        background-image: url("壁纸 (2).jpg");
        background-size: cover;
        background-position-x: center;
    }
    .layout { /*设置登录窗口部分的样式*/
        width: 900px;
        height: 530px;

        position: relative;
        box-sizing: border-box;
        margin-left: 190px;
        margin-top: 110px;
        padding: 1px;

        border: 8px solid silver;
        border-radius: 2px;
        background-image: url("壁纸 (2).jpg");
        background-size: 1300px;
        background-position-x: center;
        background-position-y: -125px;

        z-index: 1;
    }

    .layout::after { /*设置背景虚图层*/
        content: "";
        position: absolute;
        width: 100%;
        height: 100%;
        background: inherit;
        left: 0;
        top: 0;
        filter: blur(5px);
        z-index: 2;
    }

    .input { /*登录条框布局*/
        margin-top: 160px;
        margin-left: 250px;
        margin-right: 250px;
    }

    .input-group { /*调节账号和密码框图层*/
        position: relative;
        z-index: 3;
    }

    .input-group { /*调节两个输入框的之间距离*/
        padding: 15px;
    }

    button { /*设置登录按钮的图层分布和位置*/
        position: relative;
        z-index: 3;
        margin-top: 15px;
        margin-left: 120px;
    }

    .submit-default { /*设置登录按钮边界弧度*/
        border-radius: 5px;
    }

    .bz { /*火焰图标*/
        position: absolute;
        z-index: 3;
        font-size: 40px;
        margin-left: 405px;
        margin-top: 89px;
    }

    #注册 { /*注册超链接的设置*/
        position: absolute;
        z-index: 3;
        color: #222222;
        margin-top: 15px;
        margin-left: 725px;
    }

</style>
<body>
<div class="layout">
    <div id="注册">
        <span>没有用户</span><a href="register.jsp">立即注册</a>
    </div>
    <div class="bz"><span style="color: #22ffb9; ">&nbsp;</span>
        <span class="glyphicon glyphicon-fire" aria-hidden="true"
              style="size: 50px"></span></div>
    <div class="input">
        <form action="longService.jsp" method="post">
            <div class="input-group">
                账&nbsp;号:&nbsp;<input type="text" name="username">
            </div>

            <div class="input-group">
                密&nbsp;码:&nbsp;<input type="password" name="password"><br>
            </div>

            <div class="input-group">
                <input type="submit" style="display:block;margin:10px 100px auto" value="登录"  ><br>
            </div>
        </form>
    </div>
</div>
</body>
</html>

写登录的后台逻辑()

<%
    //  处理乱码
    request.setCharacterEncoding("utf-8");
    //  获取前端页面输入框里面的信息
    String username = request.getParameter("username");
    String password = request.getParameter("password");

    IUserService userService = new UserServicelmpl();
    User user = userService.queryByUsernameAndPassword(username, password);  //将账号密码传入查询语句 用user接收返回的数据

    if(user!=null){
        List<User> list = userService.queryByAge(-1); //给个-1 也就是查全部
        Set<Integer> ages = userService.queryAllage();
        session.setAttribute("ages",ages);
        session.setAttribute("list",list);
        session.setAttribute("user",user);
        response.sendRedirect("show.jsp");  //跳转到 show.jsp 值也传过去
    }else {
        request.getRequestDispatcher("login.jsp").forward(request,response);  // 重定向登录页面
    }
%>

写展示界面的页面

<%@ page import="com.xinzhi.model.User" %><%--
  Created by IntelliJ IDEA.
  User: ASUS
  Date: 2022/8/30
  Time: 10:56
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> //这个是标签库
<html>
<head>
    <title>Title</title>
    <script src="js/jquery-1.8.3.min.js" type="text/javascript"></script> 这个是js的一个文件
</head>
<body>
欢迎<%=((User)session.getAttribute("user")).getUsername()%>回来
<table border="1px solid black" cellspacing="0" cellpadding="0" width="500px" style="margin: auto;text-align: center" >  <!--table 表格标签-->
    <tr>
        <td>姓名</td>
        <td>密码</td>
        <td>年龄</td>
    </tr>
    <c:forEach items="${list}" var="user">   <!---标签库-->
        <tr>
            <td>${user.username}</td>
            <td>${user.password}</td>
            <td>${user.age}</td>
        </tr>

    </c:forEach>

    <tr>
        <td colspan="3">
            <select>
                <option value="-1">全部</option>
                <c:forEach items="${ages}" var="age">
                    <option value="${age}">${age}</option>
                </c:forEach>
            </select>
        </td>
    </tr>



</table>
<script type="text/javascript">
    $(function(){
        $("select").change(function(){
            location = "selService.jsp?sel="+ $("select").val();
        });
    });
</script>


</body>

</html>

写展示界面的后台逻辑

<%
    request.setCharacterEncoding("utf-8");

    String age = request.getParameter("sel");

    IUserService userService = new UserServicelmpl();
    List<User> list = userService.queryByAge(Integer.parseInt(age));
    Set<Integer> ages = userService.queryAllage();

    session.setAttribute("list",list);
    session.setAttribute("ages",ages);

    response.sendRedirect("show.jsp");

%>

效果图如下

 

 

 

  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的 JSP 登录注册页面的代码示例: 登录页面 login.jsp: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>登录页面</title> </head> <body> <h1>登录页面</h1> <form action="login.jsp" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="登录"> </form> <br> <a href="register.jsp">没有账号?点击注册</a> </body> </html> ``` 注册页面 register.jsp: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>注册页面</title> </head> <body> <h1>注册页面</h1> <form action="register.jsp" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> 确认密码:<input type="password" name="confirmPassword"><br> <input type="submit" value="注册"> </form> <br> <a href="login.jsp">已有账号?点击登录</a> </body> </html> ``` 在服务器端,可以根据不同的请求来处理登录和注册逻辑。例如,在 login.jsp 中,可以通过以下方式来处理登录逻辑: ```jsp <% String username = request.getParameter("username"); String password = request.getParameter("password"); // 根据用户名和密码进行验证,验证成功则重定向到主页 if (isValidUser(username, password)) { response.sendRedirect("index.jsp"); } else { // 验证失败,重新返回登录页面并提示错误信息 out.println("用户名或密码不正确"); } %> ``` 在 register.jsp 中,可以通过以下方式来处理注册逻辑: ```jsp <% String username = request.getParameter("username"); String password = request.getParameter("password"); String confirmPassword = request.getParameter("confirmPassword"); // 根据用户名和密码进行注册,注册成功则重定向到登录页面 if (registerUser(username, password, confirmPassword)) { response.sendRedirect("login.jsp"); } else { // 注册失败,重新返回注册页面并提示错误信息 out.println("注册失败,请检查输入的信息"); } %> ``` 注意,以上代码示例只是一个简单的演示,实际应用中还需要进行更多的安全性和验证处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

龙龙爱喝奶茶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值