实现UserDao中的add方法,最终完成注册功能,
实现完整的登录注册功能:
--drop table User
create table User(
id int primary key auto_increment,
act varchar(100) ,
pwd varchar(100) ,
sex char(100) ,
brith date,
hobbys varchar(100)
);
--drop table User
--insert into User(act ,pwd ,sex ,brith,hobbys ) values ("1","1",'男','2000-7-9',"编程");
--select * from User
package com.SSHC.bean;
import java.util.Date;
//bean的类名于表的名字一致,而且首字母必须大写
public class User {
//bean类中的属性名应该和表中的列名一致
private Integer id;
private String act;
private String pwd;
private String birth;
private String sex;
private String hobbys;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAct() {
return act;
}
public void setAct(String act) {
this.act = act;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getHobbys() {
return hobbys;
}
public void setHobbys(String hobbys) {
this.hobbys = hobbys;
}
}
package com.SSHC.DAO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.SSHC.Utils.DBUtils;
import com.SSHC.bean.User;
//Dao是数据访问的意思,
//在这个类中负责对user表进行增删改查的功能实现
//Dao类中的方法就是负责执行sql语句,只要有执行sql语句的代码都必须写在dao类中
public class UserDao {
public User selectByActAndPwd(String act,String pwd){
String sql = "select * from user"
+ " where act = ? and pwd = ?";
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;
User u = new User();
try {
conn = DBUtils.getConn();
pstm = conn.prepareStatement(sql);
//设置占位符
pstm.setString(1, act);
pstm.setString(2, pwd);
rs = pstm.executeQuery();
if(rs.next()) {
Integer id = rs.getInt("id");
u.setId(id);
u.setAct(act);
u.setPwd(pwd);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
//清理资源
DBUtils.close(rs, pstm, conn);
}
return u;
}
//在user表中新增一条数据
public Integer add(User u) {
// List L=new ArrayList();
//
// L.add(u);
//
// String act=null;
// String pwd=null;
// String sex=null;
// String brith=null;
// String hobbys=null;
// String[]arr={act,
// pwd,sex,brith, hobbys};
// for (int i = 0; i < L.size(); i++) {
// User p = L.get(i);
//
// System.out.println(p);
//}
String sql = "insert into User(act ,pwd "
+ ",sex ,brith,hobbys ) values (?,?,?,?,?);";
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
conn = DBUtils.getConn();
pstm = conn.prepareStatement(sql);
//设置占位符
//System.out.println(u.getAct());
pstm.setObject(1,u.getAct());
pstm.setObject(2,u.getPwd() );
pstm.setObject(3,u.getSex());
pstm.setObject(4, u.getBirth());
pstm.setObject(5, u.getHobbys());
pstm.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBUtils.close(rs, pstm, conn);
}
return 0;
}
public static void main(String[] args) {
// UserDao ud = new UserDao();
// User u = ud.selectByActAndPwd("admin", "1111");
// if(u.getId() != null && u.getId() > 0) {
// System.out.println("登录成功");
// } else {
// System.out.println("登录失败");
// }
}
}
package com.SSHC.Utils;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
public class DBUtils {
private static String driverName;
private static String url;
private static String user;
private static String pwd;
static {
//读取properties文件
Properties prop = new Properties();
//将db.properties文件读取到内存中去
InputStream is = DBUtils.class.getClassLoader()
.getResourceAsStream("db.properties");
//加载内容
try {
prop.load(is);
//读取内容
driverName = prop.getProperty("dn");
//System.out.println(driverName);
url = prop.getProperty("url");
user = prop.getProperty("un");
pwd = prop.getProperty("up");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//获取数据库连接对象的方法
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driverName);
conn = DriverManager
.getConnection(url,user,pwd);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void close(ResultSet
rs,PreparedStatement pstm
,Connection conn){
try {
if(rs != null) {
rs.close();
}
if(pstm != null) {
pstm.close();
}
if(conn != null) {
conn.close();
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
dn=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/firstjsp?useUnicode=true&characterEncoding=UTF-8
un=root
up=root
【个人的发现和解决方法:
href和src等链接有关的改成hreff和srcc等才可以保存在b站等的专栏上,不然会报“请检查网络”等的提示等,复制粘贴我辛苦写的代码时,记得三连和关注我,并且改回href和src,
用选中红线后,按Ctrl+F,点Replace All用空格或“什么都没有”等替换红线后,就不会报红线】
charset=UTF-8" pageEncoding="UTF-8"%>
String path = request.getContextPath();
String basePath = request.getScheme()+"://"
+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
="keyword1,keyword2,keyword3">
*{
font-size:50px;
}
//表单验证函数
//当这个函数返回true时,就会执行action中的代码
//如果这个函数返回false,那么就不会执行action中的代码
function doCheck(){
var flag = true;//表单验证默认是通过的
//账号的长度必须在6到30位之间
var act = document.getElementsByName('act')[0].value;
//获取输入的账号的长度
var len = act.length;
if(len < 6 || len > 30) {
flag = false;
alert('账号的长度必须在6到30位之间');
}
//获取到第一次输入的密码
var pwd = document.getElementsByName('pwd')[0].value;
//获取到第一次输入的密码的长度
len = pwd.length;
if(len < 6 || len > 30) {
flag = false;
alert('密码的长度必须在6到30位之间');
}
//两次输入的密码必须一致
//获取第二次输入的密码
var pwd1 = document.getElementsByName('pwd1')[0].value;
if(pwd != pwd1) {
flag = false;
alert('两次输入的密码不一致');
}
return flag;
}
οnsubmit="return doCheck();">
${msg }
="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
//乱码处理
request.setCharacterEncoding("utf-8");
//1、获取表单中输入的数据
String act = request.getParameter("act");
String pwd = request.getParameter("pwd");
String pwd1 = request.getParameter("pwd1");
String birth = request.getParameter("birth");
String sex = request.getParameter("sex");
String[] hobbys = request.getParameterValues("hobbys");
//将hobbys数组转换成一个字符串
StringBuilder hbs = new StringBuilder();
if(hobbys != null) {//如果没有选兴趣爱好,hobbys就是null
String dot = "";
for(int i = 0;i < hobbys.length;i ++) {
hbs.append(dot);
hbs.append(hobbys[i]);
dot = ",";
}
System.out.println(hbs);//游泳,阅读,LOL
}
//将数据打包
User u = new User();
u.setAct(act);
u.setPwd(pwd);
// try {
/**SimpleDateFormat format =
new SimpleDateFormat("yyyy-MM-dd");
Date myDate = format.parse(birth);
System.out.println(myDate);
*/
// Date myDate = new Date(birth);
//System.out.println(birth);
u.setBirth(birth);
u.setSex(sex);
u.setHobbys(hbs.toString());
//2、后台验证(省略)
//3、注册(新增一条数据)
System.out.println(act+pwd+birth+sex+hbs.toString());
UserDao ud = new UserDao();
/* * Listlist = new ArrayList();
for(int i = 0;i < list.size();i ++) {
User p = list.get(i);
System.out.println(p);
}*/
ud.add(u);
Integer count = ud.add(u);
System.out.println(act.length());
// System.out.println(count);
// UserDao UserDao= new UserDao();
// Listlist = UserDao.selectAll();
//for(User U : list) {
//System.out.println(U);
//}
//4、结果处理(也可以
/**
诗书画唱个人分享的个人总结的
注意事项:
Integer count = ud.add(u)+1;
后count=1,用if(count>0){}或
if(
act.trim().length*pwd.trim().length
*pwd1.trim().length
*birth.trim().length
*sex.trim().length
*hobbys.trim().length>0){}
或
if(
act.trim().length>0&&
pwd.trim().length>0
&&pwd1.trim().length>0
&&birth.trim().length>0
&&sex.trim().length>0
&&hobbys.trim().length>0){}
):
但如果reg,DAO等中已经设置了约束,满足约束
后才可跳转到doReg,那么这里只要
u!=null或其他去除空格后长度大于0,就可以了。
因为空格有时也有长度。
*/
if(u!=null) {//a、注册成功,跳转到login.jsp
//注册成功后将账号自动的填入到登录的账号输入框中
request.setAttribute("userName", act);
request.getRequestDispatcher("login.jsp")
.forward(request, response);
}else
{//b、注册失败,跳转到reg.jsp,同时提示注册失败
String msg = "注册失败,请联系系统管理员";
request.setAttribute("msg", msg);
request.getRequestDispatcher("reg.jsp")
.forward(request, response);
}
// } catch (Exception e) {
// e.printStackTrace();
// }
%>
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
*{
font-size:50px;
}
${msg }
//中文乱码处理
request.setCharacterEncoding("utf-8");
//1、获取用户输入的账号和密码
String act = request.getParameter("act");
String pwd = request.getParameter("pwd");
System.out.println(act);
//2、查询数据库
UserDao userDao = new UserDao();
User u = userDao.selectByActAndPwd(act, pwd);
//3、根据查询出来的结果进行处理
if(u.getId() != null && u.getId() > 0) {
//将登录的账号存放到session
//后面当你跳转到任何的页面时,还需要验证是否是合法的访问
request.getSession().setAttribute("userName", act);
//a、根据账号和密码能够查询记录,就表示登录成功,跳转到后台管理页面
request.getRequestDispatcher("manage.jsp").forward(request, response);
} else {
String msg = "账号或者密码错误";
request.setAttribute("msg", msg);
//b、没有查询到记录,就表示登录失败,跳转回login.jsp
request.getRequestDispatcher("login.jsp").forward(request, response);
}
%>
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
Hi!欢迎登录本系统,${userName }
运行:
——————————————————————————————————
常用单词和用来区别或理解的内容等:
manage为登录成功后的界面,之后可以写用于管理等方面的代码,实现其管理功能的程序等
————————
各个人分享的解决问题等的方法:
当自己某一个内容不知道怎么容,可以百度(或其他的搜索引擎),之后找到会综合处可以类比出答案等的内容:
比如我用jsp不知道怎么写DAO中的增加的封装的方法,那么我就百度和其有关的认为可以搜索到想要内容的关键词“jsp增删改查学生表”。
/link?url=hedJjaC291P3yGwc7N55kLSc2ls_Ks2xoSDzGT_y3Rrr1m3DJA85oHqIGYLXQ54N
这里面用了类比后的百度的内容
——————————
学习笔记:
一、登录功能
知道实现一个功能的步骤
1、在mysql数据库中创建一个表user,表结构:id,act,pwd
"2、搭建项目,需要创建一些包:
com.jy.bean:com/jy/bean,对应每个表中的一条数据的,你有几个表就创建一个bean
com.jy.dao:com/jy/dao,负责对表进行增删改查的,你有一个表就创建一个dao"
"com.jy是怎么来的:根据你所在的公司的网址来确定,,你的包名就将网址
倒过来写就可以了com.jy"
"3、将数据库的配置文件db.properties放到src目录下,同时将数据库的驱动包拷贝到
工程的lib目录下。将数据库连接工具类拷贝到工程目录下"
4、创建login.jsp页面
"5、设计登录的action即doLogin.jsp页面,因为这个页面没有需要展示的东西,所以
我们将它的所有的html代码都删除。然后将doLogin.jsp的相对路径写到表单的actiion属性中。"
6、实现登录的业务,编写登录的代码
在项目中,一个方法的功能越简单越单一就越能够复用
二、登录注册功能:验证码,人脸识别,短信验证
普通的注册:输入账号密码(输入两次),生日,学历,爱好等
1、创建reg.jsp页面
2、设计一个业务处理页面doReg.jsp,将表单中的action设置为这个业务处理页面
3、表单验证,保证用户输入的数据是正确的,不会破坏后台的数据库中的数据
个人的提示和发现:
运行是要注意,可以鼠标右键点“Run as”,分别有只运行Java代码或者是运行JSP的部分等的代码等。
做项目等先做界面,之后就可以有很多的思路,灵感等。
个人想出的创新的方法:
java wed登录面 代码_Java web代码和学习笔记JSP实现完整的登录注册功能的界面 解决大多之法【诗书画唱】...