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.rhkb.cn/news/291062.html

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

相关文章

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

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

智慧乡村建设新篇章:数字乡村引领农村发展新时代

目录 一、智慧乡村的内涵与建设的必要性 二、智慧乡村建设的路径探索 &#xff08;一&#xff09;加强信息基础设施建设&#xff0c;夯实智慧乡村发展基础 &#xff08;二&#xff09;推动农业智能化升级&#xff0c;提升农业生产效率和质量 &#xff08;三&#xff09;推…

接口自动化框架搭建(四):pytest的使用

1&#xff0c;使用说明 网上资料比较多&#xff0c;我这边就简单写下 1&#xff0c;目录结构 2&#xff0c;test_1.py创建两条测试用例 def test_1():print(test1)def test_2():print(test2)3&#xff0c;在pycharm中执行 4&#xff0c;执行结果&#xff1a; 2&#xff0…

Windows11系统缺少相关DLL解决办法

一.缺少msvcp120.dll 下载Mircrosoft Visual C 2015等系统关键组件 Microsoft Visual C 2015-2022 Redistributable (x86) - 14.34.31931 Installation Error etc.. - Microsoft Q&A 二.缺少python27.dll 重新下载python2.7进行安装(选择Windows x86-64 MSI installer)…

Vidmore Video Fix for Mac 视频修复工具

Vidmore Video Fix for Mac是一款功能强大且易于使用的视频修复工具&#xff0c;专为Mac用户设计。它凭借先进的视频修复技术&#xff0c;能够帮助用户解决各种视频问题&#xff0c;如视频文件损坏、无法播放、格式不支持等。 软件下载&#xff1a;Vidmore Video Fix for Mac v…

matlab及其在数字信号处理中的应用001:软件下载及安装

目录 一&#xff0c;matlab的概述 matlab是什么 matlab适用于的问题 matlab的易扩展性 二&#xff0c;matlab的安装 1&#xff0c;解压所有压缩文件 2&#xff0c;解压镜像压缩文件 3&#xff0c;运行setup.exe 4&#xff0c;开始安装 5&#xff0c;不要运行软件…

谷粒商城实战(007 压力测试)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第141p-第p150的内容 简介 安装jmeter 安装jmeter 使用中文 这样写就是200个线程循环100次 一共是2万个请求 介绍线程组 添加请求 可以是htt…

绿联 安装Uptime Kuma - 一款开源的服务器监控和状态检测工具

Uptime Kuma 功能简介 Uptime Kuma 是一款开源的服务器监控和状态检测工具&#xff0c;它帮助您跟踪服务器的可用性、性能和健康状态。 主要功能&#xff1a; 服务器监控 Uptime Kuma 可以监控多个服务器&#xff0c;包括 Web 服务器、数据库服务器、应用程序服务器等。 它会定…

【Java】Integer 什么是128陷阱(源码分析)

一、128陷阱演示 public static void main(String[] args) {Integer a 110;Integer b 110;Integer c 130;Integer d 130;System.out.println(ab);System.out.println(cd);} 在上面的方法中我定义了四个变量a、b、c和d并且进行了两次比较。你认为输出结果是什么&#xff1f;…

超卖问题的 4 种解决方案来了,太硬核了

大家好&#xff0c;我是路人&#xff0c;最近刚推出的《Java 高并发 & 微服务 & 性能调优实战案例 100 讲》&#xff0c;此课程目前已发布上线&#xff0c;正在连载中&#xff0c;文末有观看方法。 所有案例均源于个人工作实战&#xff0c;均提供原理讲解 & 亲手敲…

物联网监控可视化是什么?部署物联网监控可视化大屏有什么作用?

随着物联网技术的深入应用&#xff0c;物联网监控可视化成为了企业数字化转型的关键环节。物联网监控可视化大屏作为物联网监控平台的重要组成部分&#xff0c;能够实时展示物联网设备的运行状态和数据&#xff0c;为企业管理决策和运维监控提供了有力的支持。今天&#xff0c;…

UE5学习日记——蓝图节点前缀关键字整理

一、起因 节点如海&#xff0c;中英文翻译的时候还是有差别的&#xff0c;比如&#xff1a; 同一个中文&#xff0c;可能在英文里完全不同&#xff0c;连出现位置可能都不一样 附加 Attach Actor To Component&#xff08;将Actor附加到组件&#xff09;Append Array&#xf…

DevSecOps平台架构系列-微软云Azure DevSecOps平台架构

目录 一、概述 二、Azure DevOps和黄金管道 2.1 概述 2.2 Azure DevOps架构说明 2.2.1 架构及管道流程图 2.2.2 架构内容 2.2.2.1 Azure Boards 2.2.2.2 Azure Repos 2.2.2.3 Azure Test Plans 2.2.2.4 Azure Pipelines 2.2.2.5 Azure Application Insights 2.2.2.6…

LLMs之Mistral:Mistral 7B v0.2的简介、安装和使用方法、案例应用之详细攻略

LLMs之Mistral&#xff1a;Mistral 7B v0.2的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;Mistral AI首个7B模型发布于2023年9月&#xff0c;在基准测试中超越Llama 2 13B&#xff0c;一下子声名大振。Mistral 7B v0.2对应的指令调优版本Mistral-7B-Instruct-v0…

Topaz Video AI for mac 视频增强软件

Topaz Video AI for Mac是一款专为Mac用户设计的视频增强软件&#xff0c;它利用先进的人工智能技术和机器学习算法&#xff0c;为用户提供卓越的视频编辑和增强体验。 软件下载&#xff1a;Topaz Video AI for mac v4.2.2激活版 这款软件能够快速提高视频的清晰度、色彩饱和度…

【软考---系统架构设计师】特殊的操作系统介绍

目录 一、嵌入式系统&#xff08;EOS&#xff09; &#xff08;1&#xff09;嵌入式系统的特点 &#xff08;2&#xff09;硬件抽象层 &#xff08;3&#xff09;嵌入式系统的开发设计 二、实时操作系统&#xff08;RTOS&#xff09; &#xff08;1&#xff09;实时性能…

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

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

CXL事务层(续)

3.2 CXL.cache 3.2.1 概览 CXL.cache协议将设备和主机之间的交互定义为多个请求&#xff0c;每个请求至少有一条相关的响应消息&#xff0c;有时还有数据传输。该接口在每个方向上由三个通道组成&#xff1a;请求&#xff08;Request&#xff09;、响应&#xff08;Response&…

ESCTF-密码赛题WP

*小学生的爱情* Base64解码获得flag *中学生的爱情* 社会主义核心价值观在线解码得到flag http://www.atoolbox.net/Tool.php?Id850 *高中生的爱情* U2FsdG开头为rabbit密码,又提示你密钥为love。本地toolfx密码工具箱解密。不知道为什么在线解密不行。 *大学生的爱情* …

Django屏蔽Server响应头信息

一、背景 最近我们被安全部门的漏洞扫描工具扫出了一个服务端口的漏洞。这个服务本身是一个Django启动的web服务&#xff0c;并且除了登录页面&#xff0c;其它页面或者接口都需要进行登录授权才能进行访问。 漏洞扫描信息和提示修复信息如下: 自然这些漏洞如何修复&#xff0c…