Servlet基础 管理员注册页面

管理员注册页面

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
   
<title>注册页面</title>
    
  </head>
  
  <body>

  <form action="AdminServlet">
  管理员姓名:<input name="adminname"><br>
  管理员密码:<input name="adminpwd"><br>
       <input type = "submit" value="注册"><input type="reset" value="重置">
  </form>

   
  </body>
</html>

AdminServlet.java

package com.servlet;


import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.bean.Admin;
import com.dao.IAdminDao;
import com.dao.impl.AdminDaoImpl;

public class AdminServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
      
 //设置请求的编码格式
        response.setCharacterEncoding("utf-8");
        
        IAdminDao adminDao = new AdminDaoImpl();
        
//获取表单提交的数据
        String name = request.getParameter("adminname");
        System.out.println(name);
        String pwd = request.getParameter("adminpwd");
        System.out.println(pwd);
      
 //name 赋值到admin.adminName
        //pwd 赋值到admin.adminPWd

        Admin admin = new Admin();
        admin.setAdminName(name);
        admin.setAdminpwd(pwd);
        
//接收数据保存到数据库
        //调用AdminDaoImpl的实现

        int i = adminDao.regAdmin(admin);
     
   //判断注册是否成功
        if(i>0){
            System.out.println("注册成功!");
            
//响应头
            /*response.setHeader("user", "caixukun");*/
          
 //方法1、设置响应的编码格式
            /*response.setCharacterEncoding("utf-8");
            response.setHeader("Content-type","text/html;charset=utf-8");*/
            
//方法2、设置响应的编码格式
            response.setContentType("text/html;charset=utf-8");
            
            
          
 //字节流输出
            /*ServletOutputStream steam = response.getOutputStream();
            String mag = "zijieliu";
            steam.write(mag.getBytes());*/
            
          
 //字符流输出
            PrintWriter writer = response.getWriter();
            writer.write("<h1>注册成功!</h1>");
            writer.write("<h1>点击<a href = 'login.jsp'>这里</a>进入管理员登陆页面</h1>");
        }else{
            System.out.println("注册失败!");
            response.getWriter().write("<h1>注册失败!请重新注册</h1>");
            response.getWriter().write("<h1><a href = 'index.jsp'>返回管理员注册页面</a></h1>");
        }
    }

}

IAdminDao.java

 package com.dao;

import java.sql.ResultSet;

import com.bean.Admin;

public interface IAdminDao {
  
 //注册的接口
    int regAdmin(Admin admin);
    
    
//查询登录的接口
    ResultSet login(Admin admin);

}
AdminDaoImpl.java

package com.dao.impl;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.bean.Admin;
import com.dao.IAdminDao;
import com.mysql.jdbc.Connection;
import com.utils.BaseDao;

public class AdminDaoImpl implements IAdminDao {

    //注册功能实现
    @Override
    public int regAdmin(Admin admin) {
        int i = 0;
        Connection conn = BaseDao.getconn();
        String sql = "insert into admin values(null,?,?)";
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setObject(1, admin.getAdminName());
            ps.setObject(2, admin.getAdminpwd());
            i = ps.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return i;
    }
    
    
//登陆功能的判断
    @Override
    public ResultSet login(Admin admin) {
        ResultSet rs = null;
        //1、
        Connection conn = BaseDao.getconn();
        String sql = "select * from admin where admin_name = ? and admin_pwd = ?";
        try {
            PreparedStatement ps = conn.clientPrepareStatement(sql);
            ps.setObject(1, admin.getAdminName());
            ps.setObject(2, admin.getAdminpwd());
            rs = ps.executeQuery();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return rs;
    }

}
 

BaseDao.java

package com.utils;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import java.sql.Connection;
import java.sql.PreparedStatement;
import com.sun.corba.se.spi.orbutil.fsm.Guard.Result;
import com.sun.jndi.url.corbaname.corbanameURLContextFactory;

public class BaseDao {
    private static final String driver = "com.mysql.jdbc.Driver";
    private static final String url = "jdbc:mysql:///news_week1?characterEncoding=utf-8";
    private static final String user = "root";
    private static final String pwd = "root";
    
    static{
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static Connection getconn(){
        Connection conn = null;
        try {
             conn =  DriverManager.getConnection(url, user, pwd);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }
    public static void close(Connection conn,PreparedStatement ps,ResultSet rs){
        try {
            if(null !=rs)
                rs.close();
            if(null !=ps)
                ps.close();
            if(null !=conn)
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }    
    }

}
 

Admin.java

package com.bean;

public class Admin {
    
    
    private int adminId;
    private String adminName;
    private String adminpwd;
    public int getAdminId() {
        return adminId;
    }
    public void setAdminId(int adminId) {
        this.adminId = adminId;
    }
    public String getAdminName() {
        return adminName;
    }
    public void setAdminName(String adminName) {
        this.adminName = adminName;
    }
    public String getAdminpwd() {
        return adminpwd;
    }
    public void setAdminpwd(String adminpwd) {
        this.adminpwd = adminpwd;
    }
    @Override
    public String toString() {
        return "Admin [adminId=" + adminId + ", adminName=" + adminName
                + ", adminpwd=" + adminpwd + "]";
    }public Admin(int adminId, String adminName, String adminpwd) {
        super();
        this.adminId = adminId;
        this.adminName = adminName;
        this.adminpwd = adminpwd;
    }public Admin() {
        super();
    } 
}


管理员登陆页面

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">  
    <title>登陆页面</title>
  </head>
  <body>
  <h1>管理员登陆页面</h1>
  <form action = "LoginServlet" method="post">
    管理员姓名:<input type = "text" name = "adminname"><br>
    管理员密码:<input type = "text" name = "adminpwd"><br>
     <input type = "submit" value = "登陆"><input type = "submit" value = "取消"><br>
  </form>

  </body>
</html>

LoginServlet.java

package com.servlet;


import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.bean.Admin;
import com.dao.IAdminDao;
import com.dao.impl.AdminDaoImpl;

public class LoginServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        IAdminDao dao = new AdminDaoImpl();
        
        //处理乱码
        request.setCharacterEncoding("utf-8");
        
        //设置响应的编码格式
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //接收表单数据
        String name = request.getParameter("adminname");
        String pwd = request.getParameter("adminpwd");
        
        //连接数据库判断是否存在登录的用户
        Admin admin = new Admin();
        admin.setAdminName(name);
        admin.setAdminpwd(pwd);
            
        //调用接口实现查询登陆用户功能
        ResultSet rs = dao.login(admin);
        //判断登陆是否成功
        try {
            if(rs.next()){
                //response.getWriter().write("<h1>恭喜您登陆成功!</h1>");    

                拓展      转发和重定向
                /*转发的形式实现页面跳转 request.getRequestDispatcher
                http://localhost:8080/adminDemo1/LoginServlet
                request.setAttribute("user", name);
                request.getRequestDispatcher("success.jsp").forward(request, response);*/
                /*重定向的方式实现页面跳转 response.sendRedirect
                http://localhost:8080/adminDemo1/success.jsp
                response.sendRedirect("success.jsp");*/
                
                /*
                 * 转发和重定向的区别
                 * 1、地址栏不同,转发地址栏不发生改变,重定向地址栏改变为重定向的页面。
                 * 2、request 作用域一次请求的参数,转发可以共享,可以取request作用域的值,转发不可以。
                 * 3、转发是一次请求,重定向是两次请求。
                 * 4、转发只能跳转到本项目下的路径,重定向只要网络允许可以跳转任意路径。
                 */

                
            }else {
                response.getWriter().write("<h1>登陆失败!</h1>");
                response.getWriter().write("<a href = 'login.jsp'>返回登陆界面!</a>");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

拓展

success.jsp 登陆成功后跳转页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'success.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
  
  <body>
 
  <h1>欢迎${user},登陆成功</h1>
  </body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/780176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

互联网摸鱼日报(2024-03-29)

互联网摸鱼日报(2024-03-29) 36氪新闻 获LG战略投资6000万美元&#xff0c;「Bear Robotics」搭建机器人实时反馈平台&#xff5c;硬氪首发 亏损收窄55.7%&#xff0c;Keep仍需挖金 业绩快报&#xff5c;广汽集团2023全年汇总营收约5023亿元&#xff0c;全年派息15.7亿元 海…

搜索与图论——bellman—ford算法、spfa算法求最短路

bellman-ford算法 时间复杂度O(nm) 在一般情况下&#xff0c;spfa算法都优于bf算法&#xff0c;但遇到最短路的边数有限制的题时&#xff0c;只能用bf算法 bf算法和dijkstra很像 #include<iostream> #include<queue> #include<cstring> #include<algori…

新数字时代的启示:揭开Web3的秘密之路

在当今数字时代&#xff0c;随着区块链技术的不断发展&#xff0c;Web3作为下一代互联网的概念正逐渐引起人们的关注和探索。本文将深入探讨新数字时代的启示&#xff0c;揭开Web3的神秘之路&#xff0c;并探讨其在未来的发展前景。 1. Web3的定义与特点 Web3是对互联网未来发…

安装docker 并搭建出一颗爱心树

1、docker介绍 Docker 是⼀个开源的容器运⾏时软件&#xff08;容器运⾏时是负责运⾏容器的软件&#xff09;&#xff0c;基于 Go 语 ⾔编写&#xff0c;并遵从 Apache2.0 协议开源。 Docker可以让开发者打包⾃⼰的应⽤以及依赖到⼀个轻量的容器中&#xff0c;然后发布到任何…

在 Linux/Ubuntu/Debian中创建、复制和删除文件和目录

要在 Linux 中创建、复制和删除文件和目录&#xff0c;可以使用各种命令。 以下是一些常用的&#xff1a; 1、创建目录&#xff1a; mkdir 目录名创建目录层次结构&#xff1a; mkdir -p 目录路径/子目录创建文件&#xff1a; touch 文件名4.复制文件&#xff1a; cp 源文件…

如何通过针对iOS的动态分析技术绕过反调试机制

在这篇文章中&#xff0c;我们将跟大家介绍和分析一种针对iOS的新型安全研究技术&#xff0c;该技术能够让iOS应用程序的调试过程更加轻松&#xff0c;并解决那些可能会延缓我们步伐的阻碍。 如果你要对一个采用了反调试技术的iOS应用程序或二进制文件进行调试的话&#xff0c;…

民航电子数据库:CAEMigrator迁移数据库时总是卡死

目录 一、场景二、异常情况三、排查四、应急方案 一、场景 1、对接民航电子数据库 2、将mysql数据库迁移到cae数据库 3、使用CAEMigrator迁移工具进行数据库迁移时&#xff0c;该工具会卡死&#xff08;不清楚是否是部署cae服务的服务器资源导致&#xff09; 二、异常情况 …

数据结构与集合(三)

在计算机科学领域&#xff0c;哈希表是非常重要的数据结构&#xff0c;它们在数据组织和存储中扮演着重要角色。本文将介绍哈希表的的基本概念、特点以及实际应用&#xff0c;帮助读者更好地理解这种数据结构在算法设计和编程中的重要性。让我们一起深入探讨哈希表&#xff0c;…

Java的KruskaI知识点(含面试大厂题和源码)

Kruskal算法是用于在加权无向图中找到最小生成树的一种算法。与Prim算法不同&#xff0c;Kruskal算法是一种基于边的贪心算法&#xff0c;它在构建最小生成树的过程中逐步添加边。以下是Kruskal算法的一些关键知识点&#xff1a; 1. 算法概述 Kruskal算法从考虑所有边的集合开…

【python plotly库介绍】从视觉到洞见:桑基图在业务分析中的应用【保姆级教程过于详细珍藏版】

&#x1f464;作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 本文结构&#xff1a;工具介绍python实现库 - 案例 - 分析思路与过程 实战专栏&#xff1a;https://blog.csdn.net/cciehl/category_12615648.html 备注说明&#xff1a; 企业…

2024软件设计师备考讲义——(7)

数据库技术 一、数据库基础 1.数据库系统 DB、DBS、DBA、DBMS 2.三级模式两级映像 内模式 物理存储 概念模式 基本表 外模式 用户使用应用程序&#xff0c;视图级别 外模式-概念模式的映像 表和视图之间的映射若表中数据变化&#xff0c;只要修改映射&#xff0c;不用改程序…

vue使用el-upload上传,上传错误文件,名称还会显示

vue使用el-upload上传&#xff0c;上传错误文件&#xff0c;名称还会显示 背景&#xff1a;上传不符合后缀的文件&#xff0c;但是还是在页面中显示&#xff0c;使用的是http-request方法 代码&#xff1a; <el-upload multiple class"avatar-uploader" action…

【八股03.29】

【八股03.29】 1.内存泄漏&#xff1f;野指针&#xff1f;悬挂指针&#xff1f; 什么是内存泄漏&#xff1f; 内存泄漏是指程序运行过程中申请的动态分配的堆内存没有被释放&#xff0c;造成系统内存浪费&#xff0c;运行速度减慢甚至崩溃等严重后果。 如何避免&#xff1f;…

DARTS-PT: RETHINKING ARCHITECTURE SELECTION IN DIFFERENTIABLE NAS

Rethinking Architecture Selection in Differentiable NAS 论文链接&#xff1a;https://arxiv.org/abs/2108.04392v1 项目链接&#xff1a;https://github.com/ruocwang/darts-pt ABSTRACT 可微架构搜索(Differentiable Neural Architecture Search, NAS)是目前最流行的网…

光耦合器电路基本概述

在当今快速发展的技术环境中&#xff0c;光耦合器电路在确保电信号跨隔离电路的无缝传输方面发挥着关键作用。这些半导体器件通常被称为光电隔离器&#xff0c;具有许多优点&#xff0c;包括电路隔离、信号传输和精确的电路控制。然而&#xff0c;如果不全面了解市场上各种光耦…

Python批量提取pdf首页并合并为一个文件

前情提要&#xff1a;python安装pypdf2包 pip install pypdf2 第一种&#xff1a;既需要每一个单独的首页&#xff0c;也需要将首页合并。 整体操作思路&#xff0c;将文件夹下面原本的每一个pdf获取第一页&#xff0c;然后再写出&#xff0c;将其放在FirstPage文件夹下。再…

Verilog语法之always语句学习

always语法是Verilog_HDL中最常用的一种语法。 always过程语句和语句块组成的&#xff0c;语法格式如下所示。 always(敏感信号1 or 敏感信号2.....) always实现组合逻辑和时序逻辑。用always实现组合逻辑要将所有的敏感信号加入敏感列表中&#xff1b;用always实现时序逻辑时…

vue 窗口内容滚动到底部

onMounted(() > {scrollToBottom() }) // 滚动到底部方法 const scrollToBottom () > {// 获取聊天窗口容器let chatRoom: any document.querySelector(".chat-content");// 滚动到容器底部chatRoom.scrollTop chatRoom.scrollHeight; } 效果 聊天窗口代码…

aeon,一个好用的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个好用的 Python 库 - aeon Github地址&#xff1a;https://github.com/aeon-toolkit/aeon 在现代计算机科学和人工智能领域&#xff0c;处理时间序列数据是一个重要而复杂的任务。Python aeon库…

npm install 报错ERESOLVE unable to resolve dependency tree

描述&#xff1a;npm install 报错ERESOLVE unable to resolve dependency tree 解决方案&#xff1a; npm install --legacy-peer-deps