Servlet基础 管理员注册页面

news2025/2/2 4:36:45

管理员注册页面

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.coloradmin.cn/o/1555341.html

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

相关文章

linux基础命令篇: centos7虚拟机网络配置——NAT模

linux基础命令篇&#xff1a; centos7虚拟机网络配置——NAT模式 1搞清楚NAT模式概念 在网络地址转换&#xff08;NAT&#xff09;模式下&#xff0c;虚拟机与宿主机共享一个IP地址。虚拟机的所有网络流量都会通过宿主机的IP地址进行转换&#xff0c;然后发送到外部网络。这意…

小型分布式文件存储系统GoFastDfs应用简介

前言 最近稍微留意了一下各个文件存储系统的协议&#xff0c;发现minio是LGPLV3, 而fastdfs 是GPL3,这些协议其实对于商业应用是一个大坑。故而寻找一些代替品。 go-fastdfs就是其中之一&#xff0c;官网在&#xff1a; go-fastdfs 具体应用 其实可以直接查看官网教程的。 下…

【学习】JMeter和Postman两种测试工具的主要区别有哪些

Postman和JMeter都是常用的API测试工具&#xff0c;但它们之间存在一些不同之处。以下是Postman和JMeter的主要区别&#xff1a; 语言支持 Postman是一个基于Chrome的应用程序&#xff0c;因此它使用JavaScript作为编程语言。这意味着你可以使用JavaScript来编写测试脚本和断…

【蓝桥杯选拔赛真题50】C++简易炸弹超人 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解析

目录 C简易炸弹超人 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 C简易炸弹超人 第十四届蓝桥杯青少年创意编程大赛C选拔赛真题 一、题目要求 1、编程实现 有一块矩形游戏场地&#x…

k8s局域网通过operator部署rabbitmq

参考&#xff1a;Installing RabbitMQ Cluster Operator in a Kubernetes Cluster | RabbitMQ 1、下载cluster-operator.yml wget https://github.com/rabbitmq/cluster-operator/releases/download/v2.7.0/cluster-operator.yml 2、拉取对应的镜像&#xff0c;这里的版本是根…

【动态规划】1223. 掷骰子模拟

作者推荐 视频算法专题 LeetCode1223. 掷骰子模拟 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数。 不过我们在使用它时有个约束&#xff0c;就是使得投掷骰子时&#xff0c;连续 掷出数字 i 的次数不能超过 rollMax[i]&#xff08;i 从 1 开始编号&#xff09…

跃然纸上的灵感再现,手绘风格的开源绘图白板工具:Excalidraw

Excalidraw&#xff1a;即绘即思&#xff0c;直观呈现未来流程图&#xff01;- 精选真开源&#xff0c;释放新价值。 概览 在撰写文章或构建演示案例的过程中&#xff0c;为了增强视觉表现力和信息传达深度&#xff0c;适时融入图表或图形显得至关重要。Excalidraw作为一款基于…

mysql之MyBatis核心工作原理

MyBatis核心工作原理 一、源码环境 1.手动编译源码 工欲善其事必先利其器。为了方便我们在看源码的过程中能够方便的添加注释&#xff0c;我们可以自己来从官网下载源码编译生成对应的Jar包&#xff0c;然后上传到本地maven仓库&#xff0c;再引用这个Jar。大家可以自行去官…

Java 扫描某包下所有类的注解并获得注解值

背景 &#xff1a; 需求 需要获取某个包下的所有的注解 并不是全部项目的 所以 只用针对某个包 进行扫描 获取注解 数据就行 百度了一圈 spring boot 没有自带的 获取注解集合的方法 在看 php 中 hyperf 框架 看到了 这个方法 就是因为 我需求是 php 和java 合体 微服务开发 …

从代码生成工具看技术手段升级

从代码生成工具看技术手段升级 过去现在在日常工作中&#xff0c;你会用到代码生成工具吗&#xff1f;最喜欢哪一种呢&#xff1f;你一般使用代码生成工具来做什么&#xff1f;面对尚处于“成长期”的代码生成工具&#xff0c;你有哪些期待和诉求呢&#xff1f; 过去 在过去的…

小程序UI设计规范,界面设计尺寸详解

作为互联网技术的重要组成部分&#xff0c;小程序在日常生活中发挥着越来越重要的作用。因此&#xff0c;了解和严格遵守小程序的 UI 设计标准非常重要&#xff0c;它不仅可以帮助我们在保证良好用户体验的同时优化小程序&#xff0c;还可以使我们的产品在竞争激烈的市场中占据…

java中的继承和组合

继承 在java中继承指的是让类与类之间产生父子关系&#xff0c;被继承的类叫做父类或者基类、超类&#xff0c;继承的类叫做子类或者派生类。这里所说的继承和现实生活中的继承可以理解为同一个意思。当子类继承父类时&#xff0c;子类就能使用父类之中的非私有成员&#xff0c…

深度学习pytorch——卷积神经网络(持续更新)

计算机如何解析图片&#xff1f; 在计算机的眼中&#xff0c;一张灰度图片&#xff0c;就是许多个数字组成的二维矩阵&#xff0c;每个数字就是此点的像素值&#xff08;图-1&#xff09;。在存储时&#xff0c;像素值通常位于[0, 255]区间&#xff0c;在深度学习中&#xff0…

C++多线程:线程的创建、join、detach、joinable方法(二)

1、线程的开始与结束 程序运行起来&#xff0c;生成一个进程&#xff0c;该进程所持有的主线程开始自动运行&#xff0c;main主线程运行完所有的代码从main函数中返回表示整个进程运行完毕&#xff0c;标志着主线程和进程的死亡&#xff0c;等待操作系统回收资源&#xff0c;因…

五、基于KubeAdm搭建多节点K8S集群

如需查阅上一步骤,请点击下面链接:四、戴尔R630本地服务器Linux Centos7.9系统安装docker-ce-20.10.10-3.el7版本-CSDN博客文章浏览阅读727次,点赞12次,收藏13次。1、准备工作3、Linux Centos7.9系统的iDRAC远程管理、网络设置、SecureCRT远程登录终端、企业级静态ip地址配…

SpringBoot实现RabbitMQ的定向交换机(SpringAMQP 实现Direct定向交换机)

文章目录 Direct 交换机特点实战声明交换及其队列(以注解方式)发消息 应用 上一篇文章中的 Fanout 模式&#xff0c;一条消息&#xff0c;会被所有订阅其交换机的队列都消费。 但是&#xff0c;在某些场景下&#xff0c;我们希望不同的消息被不同的队列消费。这时就要用到 Dir…

Unity-通过AB包使用SpriteAtlas图集(基于unity2018)

项目遇到了一个性能问题&#xff0c;需要优化UI。其中就涉及UI的合批问题&#xff0c;其中自然而然就会关联到图集的概念。旧版图集&#xff0c;Legacy Atlas&#xff0c;还没有太研究。今天主要看一下SpriteAtlas怎么使用的。 因为我们项目资源工程和Runtime是分离的&#xf…

(十二)图像的Sobel梯度锐化

环境&#xff1a;Windows10专业版 IDEA2021.2.3 jdk11.0.1 OpenCV-460.jar 系列文章&#xff1a; &#xff08;一&#xff09;PythonGDAL实现BSQ&#xff0c;BIP&#xff0c;BIL格式的相互转换 &#xff08;二&#xff09;BSQ,BIL,BIP存储格式的相互转换算法 &#xff08;三…

RabbitMQ 延时消息实现

1. 实现方式 1. 设置队列过期时间&#xff1a;延迟队列消息过期 死信队列&#xff0c;所有消息过期时间一致 2. 设置消息的过期时间&#xff1a;此种方式下有缺陷&#xff0c;MQ只会判断队列第一条消息是否过期&#xff0c;会导致消息的阻塞需要额外安装 rabbitmq_delayed_me…

327京东一面

1.项目相关 2.手撕SQL 两道 3.JMeter性能测试 首先&#xff0c;进行基准测试&#xff1a; 单用户测试&#xff08;单用户循环多次得到的数据&#xff09;&#xff1b;为多用户并发执行提供参考 其次&#xff0c;进行负载测试&#xff1a; 通过逐步增加系统负载&#xff0…