基于jsp+servlet完成的用户注册

 思考 : 需要创建实体类吗? 需要创建表吗

    |----User  存在、不需要创建了!表同理、也不需要了

 

1.设计dao接口

package cn.javabs.usermanager.dao;import cn.javabs.usermanager.entity.User;/*** 用户的dao接口的设计* @author Mryang**/
public interface UserDao {/*** 用户登录功能* @param username 参数  为用户名* @param password 参数 为密码* @return  user*/User login(String username , String password);/*** 用户注册* @param user 参数是  用户对象!!!!!!!* @return  记录条数  受影响的行数*/int register(User user);}

 2.UserDaoImpl 实现类

package cn.javabs.usermanager.dao.impl;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import cn.javabs.usermanager.dao.UserDao;
import cn.javabs.usermanager.entity.User;
import cn.javabs.usermanager.exception.UserLoginException;
import cn.javabs.usermanager.exception.UserRegisterException;
import cn.javabs.usermanager.util.JdbcUtil;
/*** userdao的实现类* @author Mryang*	调用 jdbc**静态方法优于构造方法先执行**/
public class UserDaoImpl implements UserDao {@Overridepublic User login(String username, String password) {try {Connection con = JdbcUtil.getConnection();// 通过con 链接创建一个执行SQL语句的对象StatementStatement st = con.createStatement();ResultSet rs = st.executeQuery("select * from  user  where username = '"+username+"'  and password = '"+password+"';");if(rs.next()){// 有数据才执行以下// 类型   对象  = 。。。User user =  new User();//				rs.getString();//columnIndex  数据库中表的列号  从0计数
//				rs.getString(columnLabel)//columnLabel 数据库中表的列名//				String name = rs.getString("username");//name  admin
//				String pwd = rs.getString("password");//name  admin
//				System.out.println("name:"+name);
//				System.out.println("pwd:"+pwd);
//				user.setUsername(name);// 封装。注入user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));System.out.println("userDao中的user的内容是"+ user);return user;// 已经有了 username和password}else{//没数据才执行以下return null;}} catch (SQLException e) {throw  new UserLoginException();}}@Overridepublic int register(User user) {try {// 获取链接Connection conn = JdbcUtil.getConnection();// 创建执行SQL语句的对象Statement st = conn.createStatement();int row = st.executeUpdate("insert into user(username,password,sex) values ('"+user.getUsername()+"','"+user.getPassword()+"','"+user.getSex()+"')");return row;} catch (SQLException e) {throw  new UserRegisterException();}}}

  3.service接口设计

package cn.javabs.usermanager.service;import cn.javabs.usermanager.entity.User;public interface UserService {/*** 用户登录功能* @param username 参数  为用户名* @param password 参数 为密码* @return  user*/User userLogin(String username , String password);/*** 用户注册* @param user* @return*/int userRegist(User user);}

  

serviceImpl

package cn.javabs.usermanager.service.impl;import cn.javabs.usermanager.dao.UserDao;
import cn.javabs.usermanager.dao.impl.UserDaoImpl;
import cn.javabs.usermanager.entity.User;
import cn.javabs.usermanager.service.UserService;public class UserServiceImpl implements UserService {// 采用多态的形式进行实例化dao  UserDao dao = new  UserDaoImpl();@Overridepublic User userLogin(String username, String password) {//dao代表的是UserDao 这个接口
//		.login  用这个接口中的用户登录功能  并且传了两个参数给你return dao.login(username, password);}@Overridepublic int userRegist(User user) {return dao.register(user);}}

UserServlet

package cn.javabs.usermanager.web.servlet;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import cn.javabs.usermanager.entity.User;
import cn.javabs.usermanager.service.UserService;
import cn.javabs.usermanager.service.impl.UserServiceImpl;public class UserLoginServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/** 1 set encoding*/response.setContentType("text/html");response.setCharacterEncoding("utf-8");request.setCharacterEncoding("utf-8");/** 2. get 前台  的  参数*/String username = request.getParameter("username");String password = request.getParameter("password");/** 3. 将获取到的用户名和密码传递给 userService!* 所以 得有  userService  没有  怎么  办?  实例化  就有了 */UserService userService = new UserServiceImpl();User u = userService.userLogin(username, password);//u可能为前面传递过来的user或是nullif(u == null){response.getWriter().write("您的用户名或密码有误,请检查!");response.setHeader("Refresh", "5;Url="+ request.getContextPath());}else{request.setAttribute("mark", "用户登录成功!");request.getRequestDispatcher("/message.jsp").forward(request, response);}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet( request,  response);}}  

 register.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><center><form action="<%=basePath%>servlet/UserRegistServlet" method="post" ><table border="1px" width="438px"   ><tr align="center"><td colspan="2"><a href="<%=basePath%>login.jsp">如已有用户,点击去登录</a></td></tr><tr align="center"><td>用户名</td><td><input type="text" name="username" ></td></tr><tr align="center"><td>密码</td><td><input type="password" name="password" ></td></tr><tr align="center"><td>性别</td><td>男<input type="radio" name="sex" value="男" checked="checked" >女<input type="radio" name="sex" value="女" ></td></tr><tr align="center"><td colspan="2" ><input type="submit" value="免费注册" ><input type="reset" value="重置内容" ></td></tr></table>   			</form></center></body>
</html>

  

转载于:https://www.cnblogs.com/xiaoxiao5016/p/10598999.html

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

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

相关文章

vue resource then

https://www.cnblogs.com/chenhuichao/p/8308993.html

云开发创建云函数

安装wx-server-sdk时候&#xff0c;终端报错如下&#xff1a; 解决方法&#xff1a; 运行&#xff1a;npm cache clean --force即可 转载于:https://www.cnblogs.com/moguzi12345/p/9758842.html

Java8新特性——函数式接口

目录 一、介绍 二、示例 &#xff08;一&#xff09;Consumer 源码解析 测试示例 &#xff08;二&#xff09;Comparator &#xff08;三&#xff09;Predicate 三、应用 四、总结 一、介绍 FunctionalInterface是一种信息注解类型&#xff0c;用于指明接口类型声明…

CSS3笔记之基础篇(一)边框

效果一、圆角效果 border-radius 实心上半圆&#xff1a; 方法&#xff1a;把高度(height)设为宽度&#xff08;width&#xff09;的一半&#xff0c;并且只设置左上角和右上角的半径与元素的高度一致&#xff08;大于也是可以的&#xff09;。 div {height:50px;/*是width…

JavaSE之Java基础(1)

1、为什么重写equals还要重写hashcode 首先equals与hashcode间的关系是这样的&#xff1a; 1、如果两个对象相同&#xff08;即用equals比较返回true&#xff09;&#xff0c;那么它们的hashCode值一定要相同&#xff1b; 2、如果两个对象的hashCode相同&#xff0c;它们并不一…

bootstarp table

https://www.cnblogs.com/laowangc/p/8875526.html

高级组件——弹出式菜单JPopupMenu

弹出式菜单JPopupMenu&#xff0c;需要用到鼠标事件。MouseListener必须要实现所有接口&#xff0c;MouseAdapter是类&#xff0c;只写你关心的方法&#xff0c;即MouseAdapter实现了MouseListener中的方法 import javax.swing.*; import java.awt.*; import java.awt.event.Mo…

CSS3笔记之基础篇(二)颜色和渐变色彩

效果一、颜色之RGBA RGB是一种色彩标准&#xff0c;是由红(R)、绿(G)、蓝(B)的变化以及相互叠加来得到各式各样的颜色。RGBA是在RGB的基础上增加了控制alpha透明度的参数。 语法&#xff1a; color&#xff1a;rgba(R,G,B,A) 以上R、G、B三个参数&#xff0c;正整数值的取值…

19_03_26校内训练[魔法卡片]

题意 有n张有序的卡片&#xff0c;每张卡片上恰有[1,m]中的每一个数&#xff0c;数字写在正面或反面。每次询问区间[l,r]&#xff0c;你可以将卡片上下颠倒&#xff0c;问区间中数字在卡片上方的并的平方和最大是多少。q,n*m≤1,000,000。 思考 一个很重要的性质&#xff0c;若…

vue 静态图片引入

https://blog.csdn.net/weixin_33862188/article/details/93325502

c:if test=/c:if 使用

1、页面引用<%taglib uri"http://java.sun.com/jsp/jstl/core" prefix"c"%> 2、整形判断&#xff1a; <c:if test"${TEST 1}"> </c:if> 3、判断非空&#xff1a; <c:if test"${empty TEST}"> TEST为空 <…

CSS3笔记之基础篇(三)文字与字体

要点一、text-overflow与word-wrap text-overflow&#xff1a;设置是否使用一个省略标记&#xff08;...&#xff09;标示对象内文本的溢出。 word-wrap&#xff1a;设置文本行为&#xff0c;当前行超过指定容器的边界时是否断开转行。 语法如下&#xff1a; 注意&#xff1…

XV6操作系统代码阅读心得(二):进程

1. 进程的基本概念 从抽象的意义来说&#xff0c;进程是指一个正在运行的程序的实例&#xff0c;而线程是一个CPU指令执行流的最小单位。进程是操作系统资源分配的最小单位&#xff0c;线程是操作系统中调度的最小单位。从实现的角度上讲&#xff0c;XV6系统中只实现了进程&…

webservices

https://blog.csdn.net/VitaminZH/article/details/81123571

.Net Core 商城微服务项目系列(十二):使用k8s部署商城服务

一、简介 本篇我们将会把商城的服务部署到k8s中&#xff0c;同时变化的还有以下两个地方&#xff1a; 1.不再使用Consul做服务的注册和发现&#xff0c;转而使用k8s-dns来实现。 2.不再使用Ocelot作为业务网关&#xff0c;使用Traefik来实现。 正如上面所讲&#xff0c;服务发现…

HTML、CSS知识点总结,浅显易懂。

一&#xff0c;htmlcss基础 1-1 Html和CSS的关系 学习web前端开发基础技术需要掌握&#xff1a;HTML、CSS、JavaScript语言。下面我们就来了解下这三门技术都是用来实现什么的&#xff1a; 1. HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息&#xf…

Thinking in Java 源代码 source code 在IDEA上运行

参考我52的文章&#xff1a;https://www.52pojie.cn/thread-912471-1-1.html 转载于:https://www.cnblogs.com/AI-Cobe/p/10605434.html

CSS知识体系图谱

转自&#xff1a;https://blog.csdn.net/A13330069275/article/details/78448415

python2 pip安装包等出现各种编码错误UnicodeDecodeError: 'ascii'(/或者utf-8) codec can't decode byte 0xd2......

1.问题描述&#xff1a; python2环境&#xff0c;pip安装包时报错UnicodeDecodeError: ascii(/或者utf-8) codec cant decode byte 0xd2... 类似如下情况 2.原因分析 一开始依据网上给出的教程修改python安装路径下的各种文件&#xff0c;添加各种编码&#xff0c;始终无法解决…

mybatis自动生成代码

https://blog.csdn.net/qq_31169429/article/details/89137896