-
登录注册找回密码以及验证(jsp+servlet+mysql+mvc)
2013-08-08 00:29:36一款完整的前台登录(验证)、注册(验证)、通过密保找回密码(验证...这个登录界面上面有注册、找回密码的链接,没有任何错误,验证相当完整,整体在mvc模式的基础上采用servlet和jsp的跳转实现。页面是也很漂亮的。 -
登录注册验证(jsp+servlet+mysql+mvc)_jsp+dao+bean+servlet(MVC模式)实现简单用户登录和注册页面...
2021-01-21 03:57:41功能介绍本项目通过使用jsp和servlet实现简单的用户登录。主要逻辑为:如果用户不存在,则首先进行注册(注册信息同步到数据库中)。进行注册后,可进入登录页面对账号进行登录。如果账号存在,则正确跳转到欢迎界面,...功能介绍
本项目通过使用jsp和servlet实现简单的用户登录。主要逻辑为:
如果用户不存在,则首先进行注册(注册信息同步到数据库中)。
进行注册后,可进入登录页面对账号进行登录。
如果账号存在,则正确跳转到欢迎界面,否则提示用户账号信息输入错误。
用户进行登录页面时需要填写验证码同时可勾选是否两周内免登陆。
用户进入欢迎界面,则会显示这是用户第几次登录,如果不是第一次登录则会显示上次登录时间。
如果用户直接进入welcome,(没有进行登录,直接打开welcome.jsp)则会跳转到登录页面,防止非法登录。
前期工作准备
1.安装了Tomcat并可以成功使用。
2.由于需要与数据库连接,本项目使用的是mysql数据库,需要引入
mysql-connector-java-5.1.9.jar包(可在官方下载或者通过maven引入mysql依赖),需要注意mysql-connector-java-5.1.9.jar需要放在C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext路径下,否则会出现连接数据库异常。
引入maven依赖:
mysql
mysql-connector-java
5.1.38
创建数据库
如果在DOS窗口下创建表的话则应该加上ENGINE=InnoDB DEFAULT CHARSET=utf-8:表示可以添加中文字符,否则直接添加中文字符会出现乱码 。
CREATE TABLE `usert` (
`username` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf-8
此时数据库为空,无数据需要先进行注册才能登陆成功。
Bean封装的数据信息
User:
public class User {
private String name;
private String pd;
public User(){}
public String getPd() {
return pd;
}
public void setPd(String pd) {
this.pd = pd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Count:
public class Counter {
private int count=1;
public Counter(){}
public int getCount() {
return count++;
}
public void setCount(int count) {
this.count = count;
}
}
Dao对数据库进行操作
package Dao;
import java.sql.*;
import java.util.ArrayList;
public class UserDao {
public boolean SearchUser(String u,String p) throws SQLException {
PreparedStatement preparedStatement = null;
ResultSet rs =null;
Connection con = null;
//启动mysql驱动器
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8", "root", "123456");
String sql = "select * from usert where username=? and password=?";
preparedStatement = con.prepareStatement(sql);
preparedStatement.setString(1, u);
preparedStatement.setString(2, p);
rs = preparedStatement.executeQuery();
if(rs.next()){
return true;
}
else {
return false;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
finally {
if(rs!=null) {
rs.close();
}
if(preparedStatement!=null) {
preparedStatement.close();
}
if(con!=null){
con.close();
}
}
return false;
}
public void insertUser(String u,String p) throws SQLException {
ArrayList users=new ArrayList();
PreparedStatement preparedStatement = null;
Connection con = null;
//启动mysql驱动器
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8", "root", "123456");
preparedStatement = con.prepareStatement("insert into usert values(?,?)");
preparedStatement.setString(1,u);
preparedStatement.setString(2,p);
preparedStatement.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
finally {
if(con!=null) {
con.close();
}
if(preparedStatement!=null) {
preparedStatement.close();
}
}
}
}
实现登录页面
三个页面处理
欢迎界面(LoginServlet.jsp)
1.代码
LoginServletfunction validate() {
if(login.username1.value===""){
alert("账号不能为空");
return;
}
if(login.passwd.value===""){
alert("密码不能为空");
return;
}
if(login.code.value===""){
alert("请输入正确的验证码");
return;
}
login.submit();
}
function refresh() {
login.imgValidate.src="index.jsp?id="+Math.random();
}
用户名:
密码:
两周内免登陆
验证码:
String username = null;
String password = null;
Cookie[] cookies = request.getCookies();
for (int i = 0; i < cookies.length; i++) {
if ("username".equals(cookies[i].getName())) {
username = cookies[i].getValue();
} else if ("password".equals(cookies[i].getName())) {
password = cookies[i].getValue();
}
}
if (username != null && password != null) {
response.sendRedirect("welcome.jsp?uname=" +URLEncoder.encode(username,"utf-8")+ "&password=" + password);
}
%>
2.页面如下:
验证码(index.jsp)
(点击验证码可以实现更新验证码)
function refresh() {
src="index.jsp?id="+Math.random();
}
import ="java.awt.*"
import ="java.awt.image.BufferedImage"
import="java.util.*"
import="javax.imageio.ImageIO"
pageEncoding="gb2312"%>
response.setHeader("Cache-Control","no-cache");
//在内存中创建图像
int width=60,height=20;
BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//获取画笔
Graphics g=image.getGraphics();
//设置背景色
g.setColor(new Color(200,200,200));
g.fillRect(0,0,width,height);
//取随机产生的验证码(4位数字)
Random rnd=new Random();
int randNum=rnd.nextInt(8999)+1000;
String randStr=String.valueOf(randNum);
//将验证码存入session
session.setAttribute("randStr",randStr);
//将验证码显示到图像中
g.setColor(Color.black);
g.setFont(new Font("", Font.PLAIN,20));
g.drawString(randStr,10,17);
//随机产生100个干扰点,使图像中的验证码不易被其他程序探测到
for (int i = 0; i < 100; i++) {
int x=rnd.nextInt(width);
int y=rnd.nextInt(height);
g.drawOval(x,y,1,1);
}
//输出图像到页面
ImageIO.write(image,"JPEG",response.getOutputStream());
out.clear();
out=pageContext.pushBody();
%>
登录处理页面(LoginCl.java(servlet))
业务逻辑处理页面
package Register;
import Dao.UserDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.sql.*;
@WebServlet("/LoginCl")
public class LoginCl extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {
//中文乱码解决方法
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//防止非法登录 得到session
HttpSession httpSession = request.getSession(true);
//修改session的存在时间为20s
httpSession.setMaxInactiveInterval(20);
httpSession.setAttribute("pass", "ok");
//获取用户名的账号和密码
String u = null;
//针对jsp 其username为username1
u = request.getParameter("username1");
String p = null;
p = request.getParameter("passwd");
//得到提交的验证码
String code = request.getParameter("code");
//获取session验证码
HttpSession session = request.getSession();
String randStr = (String) session.getAttribute("randStr");
//获取到
if (code.equals(randStr)) {
//访问数据库
UserDao userDao=new UserDao();
try {
if (!userDao.SearchUser(u,p)) {
response.getWriter().println("抱歉:账号或密码错误,请注意核实信息重新输入");
return;
} else {
String keep = request.getParameter("keep");
if (keep != null) {
//创建cookie
Cookie cookie1 = new Cookie("username", u);
Cookie cookie2 = new Cookie("password", p);
//设置关联路径
cookie1.setPath(request.getContextPath());
cookie2.setPath(request.getContextPath());
//设置cookie的消亡时间 两周
cookie1.setMaxAge(2 * 7 * 24 * 60 * 60);
cookie1.setMaxAge(2 * 7 * 24 * 60 * 60);
//把cookie信息写给浏览器
response.addCookie(cookie1);
response.addCookie(cookie2);
}
response.sendRedirect("welcome.jsp?uname=" + URLEncoder.encode(u, "utf-8") + "&password=" + p);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
this.doGet(request,response);
}
}
如果当前不存在该用户,则会输出账号密码错误等信息,存在该用户则会跳转到欢迎界面。
欢迎界面(welcome.jsp)
%>
welcomerequest.setCharacterEncoding("gb2312");
HttpSession httpSession=request.getSession(true);
String val=(String)httpSession.getAttribute("pass");
if(val==null){
response.sendRedirect("LoginServlet.jsp");
}
application.setAttribute("COUNTER",new Integer(counter));
%>
主界面
password =
--%>--%>
welcome name :
out.println(URLDecoder.decode(user.getName(),"utf-8"));
%>
password:
password:
--%>次访问本网站!
--%>这是你第:
次访问本网站!
Cookie[] cookies = request.getCookies();
if(cookies!=null) {
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals("lastAccessTime")) {
out.println("您上次访问的时间是:");
Long lastAccessTime = Long.parseLong(cookies[i].getValue());
Date date = new Date(lastAccessTime);
out.println(date.toLocaleString());
}
}
}
//用户访问过后重新设置用户的访问时间,存储在cookie中,然后发送到客户端浏览器
Cookie cookie=new Cookie("lastAccessTime",System.currentTimeMillis()+"");
//设置cookie的有效期为5min
cookie.setMaxAge(300);
//将cookie对象添加到response对象中,这样服务器在输出response对象中的内容时
// 就会把cookie也输入到客户端浏览器
response.addCookie(cookie);
%>
实现注册页面
信息注册(register.jsp)
注册信息时需要对用户输入的密码进行判断:必须有数字和大小写英文且长度在6-20之间,为了简化代码这里使用的是正则表达式进行判断。
register欢迎您进行注册
function checkPassword() {
var ps=/^[A-Za-z0-9]{6,20}$/;
if (!ps.exec(register.password1.value)) {
alert("密码必须同时包含大小写字母和数字且长度应该在6-20之间");
return;
}
register.submit();
}
请输入账号:
请输入密码(要求:必须包含大小写英文和数字无非法字符,长度大于6位小于20位):
请选择性别:男
女
请选择家乡:
北京
上海
陕西
请选择您的爱好:唱歌
跳舞
打球
玩游戏
点击注册后则会跳转到注册成功页面,将其账号和密码进行存储到数据库中,后可以直接进行登录。
注册成功页面(registerMessage.jsp)
message信息注册成功!该用户注册信息如下:
request.setCharacterEncoding("gb2312");
String name=request.getParameter("name");
String password=request.getParameter("password1");
String sex = request.getParameter("sex");
String home = request.getParameter("home");
out.println("账号:"+name);
out.println("密码:"+password);
out.println("性别:"+sex);
out.println("家乡:"+home);
out.println("兴趣爱好:");
String[] fav = request.getParameterValues("fav");
for (int i = 0; i < fav.length; i++) {
out.print(fav[i]+" ");
}
try {
UserDao userDao=new UserDao();
userDao.insertUser(name,password);
out.println("信息注册成功,点击此处进行登录");
} catch (SQLException e) {
e.printStackTrace();
}
%>
(如下所示,数据添加成功)
功能演示
至此此项目结束,我演示一下登录时的场景。
1.数据库数据
2.输入数据库中没有的信息
3.账号密码正确
ps:需要注意一定要填写账户或者密码或者验证码,否则则会弹出错误窗口。
eg:
总结
此项目需要用到的知识点比较多,其中包括 jsp,servlet,mysql,cookie, Javabean等。需要将学到的web知识联系起来。
到此这篇关于jsp+dao+bean+servlet(MVC模式)实现简单用户登录和注册页面的文章就介绍到这了,更多相关jsp servlet登录注册内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
-
登录注册验证(jsp+servlet+mysql+mvc)_jsp+servlet+数据库做一个用户登录验证的代码
2021-02-12 10:20:21JDK是1.6版本的:http://localhost:8080/Test/index.jsp 自己测试访问连接追问:不一样,用户信息肯定是放在数据库里的啊,你可不可以发个数据库的给我啊追答:我靠,数据库怎么发给你啊。追问:数据库我自己做,你...匿名用户
1级
2012-01-05 回答
你这个其实连不连数据库都无所谓。已经给你发送到邮箱了。JDK是1.6版本的:
http://localhost:8080/Test/index.jsp 自己测试访问连接
追问:
不一样,用户信息肯定是放在数据库里的啊,你可不可以发个数据库的给我啊
追答:
我靠,数据库怎么发给你啊。
追问:
数据库我自己做,你把代码发给我就行
追答:
晕死,OK,sql语句和数据库的连接需要你进行相依修改,这个方法返回真就是说明用户和密码正确,返回假就是说明错误。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class LoginDao {
public boolean check(String name, String password) {
Connection conn = null;
PreparedStatement stm = null;
ResultSet res = null;
int num = 0;
String sql = "select count as CNT from user where userId= ? and password = ?";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.161.3 :1521:NMS", "用户名", "密码");
stm = conn.prepareStatement(sql);
stm.setString(1, name);
stm.setString(2, password);
res = stm.executeQuery();
if(res.next()){
num = res.getInt("CNT");
}
} catch (SQLException e) {
e.printStackTrace();
}
if(num>0)
return true;
else
return false;
}
}
追问:
报错:ResultSet can not re-read row data for column 1 。我用的是sqlserver 2000 ,采用官方驱动,name:text类型 ;password:varchar类型
追答:
你的驱动写对了了,这个驱动需要相关的JAR包的
追问:
3个jar包
-
jsp初学小练习1——Servlet+mvc+数据库连接池实现登录注册
2020-08-04 09:45:24一、涉及到的知识点 jsp元素基础 jsp常用对象 ...js基础(非空验证) ...注意一定要记得设置uid自动为主键,不然可能出现两个人注册同一账号,登录就会出现异常 2、在src下创建net.dj.blen 包 并在包下创建一、涉及到的知识点
-
jsp元素基础
-
jsp常用对象
-
html表单、超链接、标题标签
-
js基础(非空验证)
-
Servlet基础知识
-
数据库连接池配置
-
Java基础知识(jdbc)
(用到的东西比较多,但都是皮毛)
二、创建项目
1、创建web项目就不用说了吧,下面说一下目录吧
按照我的步骤来吧,1、设计数据库
这是我的数据库结构
注意一定要记得设置uid自动为主键,不然可能出现两个人注册同一账号,登录就会出现异常2、在src下创建net.dj.blen 包 并在包下创建User类(用户模型层)
图·:
代码如下:
package net.dj.blean; public class User { private String userid; private String username; private String password; public User(){ } public User(String userid,String username,String password){ this.userid=userid; this.username=username; this.password=password; } public String getId() { return userid; } public void setId(String id) { this.userid = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
3、在web目录下创建login.jsp(登录界面)文件和registered.jsp文件(注册界面)创建js文件夹夹 ,并在js文件夹下创建check.js(js脚本实现非空验证)文件
login.jsp代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> <html> <head> <title>用户登录</title> <script type="text/javascript" src="js/check.js"></script> </head> <body> <h3 style="text-align:center">用户登录</h3> <form action="login" method="post"> 账号:<input type="text" name="userid" id="userid"/> <br/> 密码:<input type="password" name="password" id="password"><br/> <input type="submit" value="登录" onclick="return logcheckForm();"><input type="reset" value="重置"> </form> </body> </html>
registered.jsp代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>注册</title> <script type="text/javascript" src="js/check.js"></script> </head> <body> <form action="regist" method="post" > 请输入账号:<input type="text" name="userid" id="userid"><br/> 请输入昵称:<input type="text" name="username" id="username"><br/> 请输入密码:<input type="password" name="password" id="password1"><br/> 请确认密码:<input type="password" id="password2"> <br/> <input type="submit" value="提交注册" onclick="return recheckForm();"> <input type="reset" value="重置"> </form> </body> </html>
check.js代码如下:
function recheckForm() { //注册非空验证 var txtUserid=document.getElementById("userid") var txtUsername=document.getElementById("username"); var txtPassword1=document.getElementById("password1"); var txtPassword2=document.getElementById("password2") var userid=txtUserid.value; var username=txtUsername.value; var password1=txtPassword1.value; var password2=txtPassword2.value; if(userid==""){ alert("注意,账号不能为空"); return false } if (username == ""){ alert("注意用户名不能为空!") return false; } if(password1 == ""){ alert("注意密码不能为空!"); return false; } if(password1 != password2){ alert("注意两次输入的密码不一致,请确认"); return false; } return true; } function logcheckForm() { //登录非空验证 var txtid=document.getElementById("userid"); var txtpasswod=document.getElementById("password"); var id=txtid.value; var password=txtpasswod.value; if(id=="") { alert("注意账号不能为空"); return false; } if(password==""){ alert("密码不能为空"); return false; } return true; }
4、在web目录下创建success.jsp文件(登录成功页面)failure.jsp文件(登录失败页面)reyes.jsp(注册成功页面) reno.jsp(注册失败页面)修改index.jsp文件(主页)
success.jsp文件代码:<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> <html> <head> <title>登录成功</title> </head> <body> <%=request.getParameter("username")%>恭喜登录成功 </body> </html>
failure.jsp代码:
<%--登录失败页面--%> <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> <html> <head> <title>登录失败</title> </head> <body> <%=request.getParameter("userid")%>登录失败,请检查用户名或者密码是否正确 </body> </html>
reyes.jsp代码:
%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %> <html> <head> <title>注册成功</title> </head> <body> <h3>恭喜注册成功,注册信息如下</h3> <h3>账号:<%= (String)session.getAttribute("userid")%></h3> <h3>昵称:<%= (String)session.getAttribute("username")%></h3> <h3>密码:<%=(String)session.getAttribute("userpassword")%></h3> <% session.removeAttribute("userid"); session.removeAttribute("username"); session.removeAttribute("userpassword"); %> </body> </html>
reno.jsp代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> <html> <head> <title>注册失败</title> </head> <body> 注册失败,可能是id重复了,换个id试试 <a href="registered.jsp">点我去重新注册</a> </body> </html>
index.jsp代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>主页</title> </head> <body> <a href="login.jsp">点我去登录</a> <a href="registered.jsp">点我去注册</a> </body> </html>
5、在WEB-INF下创建lib文件夹并导入mysql-conector-java-5.1.38的jar包(版本根据自己实际情况来哈,可能读者版本和我的不一样哦)并修改WEB-INF下的web.xml文件
web.xml配置修改如图:(用黄色框起来的地方可能是不一样的哦,要根据自己的数据库名修改)(jar包一定要添加到当前项目,直接复制进去是不行的)
6、在web目录下创建META_INF文件并在其目录下创建context.xml文件(连接池配置)
7、在src下创建net.dj.dbutil包,在包下创建ConnectionManager类
代码如下:package net.dj.dbutil; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; /** * 功能:数据库连接管理类 * 作者:摘星 * 日期:2020.8.3 */ public class ConnectionManager { private ConnectionManager(){ //私有化构造方法,拒绝实例化 } public static Connection getConnection(){ //定义数据库连接 Connection conn=null; try{ Context ctx=new InitialContext(); DataSource ds=(DataSource) ctx.lookup("java:comp/env/jdbc/javaweb"); //通过数据库源获取数据库连接 conn=ds.getConnection(); } catch (SQLException | NamingException throwables) { throwables.printStackTrace(); } return conn; } }
8、在src下创建net.dj.dao包并在包下创建UserD接口(数据访问接口),在dao包下创建impl包,在impl包下创建UserDaoimpl类(数据访问接口实现类), UserDaoimpl类实现了UserD接口
UserD接口代码:package net.dj.dao; import net.dj.blean.User; public interface UserD { //登录方法 User login(String uid, String upassword); //注册方法 int insert(User user); }
UserDaoimpl类代码:
package net.dj.dao.impl; import net.dj.blean.User; import net.dj.dao.UserD; import net.dj.dbutil.ConnectionManager; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.UUID; public class UserDaoimpl implements UserD { //登录方法 @Override public User login(String uid ,String upassword){ // 声明标志变量 Connection conn=null; User user=new User(); try{ //获取数据库连接 conn= ConnectionManager.getConnection(); //定义sql字符串 String strsql="select* from user where uid=? and upassword=?"; //创建预备语句对象 PreparedStatement pstmt=conn.prepareStatement(strsql); pstmt.setString(1,uid); pstmt.setString(2,upassword); //执行sql语句 ResultSet rs=pstmt.executeQuery(); //返回结果集的记录 while (rs.next()){ user.setId(rs.getString("uid")); user.setUsername(rs.getString("uname")); user.setPassword(rs.getString("upassword")); } } catch (SQLException throwables) { throwables.printStackTrace(); } return user; } //注册方法 @Override public int insert(User user){ //声明插入记录数 int count=0; //声明数据库连接 Connection conn=null; try{ //获取数据库连接 conn=ConnectionManager.getConnection(); //定义sql字符串 String strsql="insert into user (uid,uname,upassword) values(?,?,?)"; //创建预备语句对象 PreparedStatement pstmt=conn.prepareStatement(strsql); //设置占位符的值 pstmt.setString(1,user.getId()); pstmt.setString(2,user.getUsername()); pstmt.setString(3,user.getPassword()); //执行sql更新,返回更新记录数 count=pstmt.executeUpdate(); } catch (SQLException throwables) { throwables.printStackTrace(); } //返回插入记录数 return count; } }
9、在src下创建net.dj.servlet包并在其包下创建LoginServlet类和RegistServlet类
LoginServlet类代码:package net.dj.servlet; import net.dj.blean.User; import net.dj.dao.UserD; import net.dj.dao.impl.UserDaoimpl; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.net.URLEncoder; @WebServlet(name = "LoginServlet" ,value = "/login") public class LoginServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设定获取数据字符编码 request.setCharacterEncoding("utf-8"); //获取表单数据 String userid=request.getParameter("userid"); String password=request.getParameter("password"); //创建用户数据访问对象 UserD userd=new UserDaoimpl(); //通过id和密码获取用户信息 User user=userd.login(userid,password); // 判断是否登录成功 if (userid.equals(user.getId()) && password.equals(user.getPassword())){ //登录成功,跳转到登录成功界面 response.sendRedirect("success.jsp?username="+URLEncoder.encode(user.getUsername(),"utf-8")); } else{ response.sendRedirect("failure.jsp?userid="+URLEncoder.encode(userid,"utf-8")); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } }
RegistServlet类代码
package net.dj.servlet; import net.dj.blean.User; import net.dj.dao.UserD; import net.dj.dao.impl.UserDaoimpl; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; @WebServlet(name = "RegistServlet",value = "/regist") public class RegistServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设定获取数据字符编码 request.setCharacterEncoding("utf-8"); //获取请求对应的会话 HttpSession session=request.getSession(); //获取表单数据 String uid=request.getParameter("userid"); String uname=request.getParameter("username"); String upassword=request.getParameter("password"); //创建用户实体对象 User user=new User(uid,uname,upassword); //创建用户数据访问对象 UserD userD= new UserDaoimpl(); //开始注册,返回添加记录数 int count=userD.insert(user); if (count==1){ //注册成功 //设置session里的user属性 session.setAttribute("userid",uid); session.setAttribute("username",uname); session.setAttribute("userpassword",upassword); //采用重定向跳转到成功界面 response.sendRedirect("reyes.jsp"); }else { //注册失败 response.sendRedirect("reno.jsp"); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
10、运行测试:
-
-
jsp 登录注册 修改密码
2011-12-26 21:38:40jsp mvc模式的用户注册登录修改密码,JavaScript验证的。 -
Javaweb MVC模式下注册登录阶段综合源码演示(附源码)项目可用
2018-01-28 10:14:37MVC模式下演示注册登录功能,敲了一天基本功能完善。后期将会出现完整的各种框架版本...... 涉及知识点:jsp/servlet/mvc/jstl等知识点,不清楚的欢迎评论留言和私信,或者看往期文章的综合版本。 代码结构图如下...^_^喜欢的可以收藏关注今日头条号“悟空程序生活”,可查看每天更新。
MVC模式下演示注册登录功能,敲了一天基本功能完善。后期将会出现完整的各种框架版本......
涉及知识点:jsp/servlet/mvc/jstl等知识点,不清楚的欢迎评论留言和私信,或者看往期文章的综合版本。
代码结构图如下:
源码结构图
浏览器效果图(等):
注册
注册服务器验证
用户名存在验证
成功页面
核心源码图如下:
数据库数据
regist.jsp
login.jsp
registServlet
loginServlet
业务逻辑层
自定义异常
数据库处理层
实体类
关注头条号,将不断加深学习哦。
-
一步步搭建Spring+Spring MVC+Hibernate系统框架+登录与注册功能
2017-05-21 16:09:25Spring+Spring MVC + Hibernate1新建WEB项目1.1先设置myeclipse编码格式,JSP、workspace1.2新建web工程 1.3避免MyEclipse验证js文件,先在web项目上单击右键,再选择“Myecplise------->open in explorer”... -
spring mvc+shiro+cas 实现cas client功能 跳转回来404
2015-10-09 15:14:41<property name="suffix" value=".jsp"> <mvc:annotation-driven> <!-- 处理responseBody 里面日期类型 --> <mvc:message-converters> class="org.springframework.... -
当当网全套源码(附带邮箱验证功能)
2014-03-18 10:52:131.项目介绍 典型电子商务系统(在线购物平台... 如果用户未登录,显示"【登录】【注册】" 数据库 模型 其实项目目 还有不少缺陷 需要完整、大家可以自行修改、里面有一处bug关于购物车的,注入问题、大家自己找找吧 -
精通Java Web整合开发(JSP+AJAX+Struts+Hibernate)(第2版)
2012-11-29 14:55:204.2.4 用javabean实现用户登录验证57 4.3 jsp与javamail59 4.3.1 电子邮件工作原理59 4.3.2 相关协议介绍59 4.3.3 javamail简介61 4.3.4 使用javamail发送文本型邮件63 4.3.5 使用javamail发送html型邮件67 4.3.6 ... -
<<JSP网络编程技术与实例>>
2008-08-22 21:09:13298 17.6 StrutsUnitTest测试工具 299 <br>第五篇 实战篇 <br>第18章 注册模块 306 18.1 建立SQL Server数据库 306 18.2 设计JSP页面 306 <br>第19章 登录模块 318 19.1 设计JSP... -
网上在线考试系统
2012-11-16 21:18:29网上在线考试系统 基于java,jsp,mvc模式的web网站 后台管理员实现了对用户,试题,试卷,用户审核,信息发布,意见反馈,课程解锁上...实现了分页查询,js对注册,登录的即时验证等 整个网站风格简洁,大方,美观。 -
JAVAWeb新闻发布系统
2020-05-09 17:12:33注册功能:采用的表单提交注册,注册验证是用的ajax异步验证,注册成功后,就可以进行登录。 登录功能:采用session中保存用户名和密码。 该系统基于jsp、servlet技术,前端使用html、js、bootdtrap等技术,基于... -
书籍:一个Java网络课程期末实训小项目,详细介绍见readme文件-源码
2021-01-30 22:51:38注册登录模块 寄存器 注册页面中form表单 验证用户名,验证密码,验证邮箱 < form method = " post " action = " RegisterServlet " onsubmit = " return checkRegister() " > 用 户 名: < dd>< ... -
javaweb房屋中介系统设计要求
2014-03-06 14:50:41要求至少包含登录页面、注册页面、房屋信息查看页面、房屋信息搜索页面、用户管理页面、房屋信息管理页面等功能页。 PS: 1.页面内容饱满、页面数量超过15个 2 .将完成的系统改用MVC模式实现,表现层用JSP实现,... -
网上订餐系统项目实战
2017-02-20 18:14:13写在前面:学习编程过程中写的一个网上订餐...主要实现功能:用户注册登录验证排重防止非法登录首页分页物品详情购买查看历史订单上传菜谱 一.使用的环境 这个网上订餐系统前台是jsp页面 后台管理是用的Strus2+ -
8、SpringMVC:拦截器+文件上传下载
2020-09-13 21:27:44验证用户是否登录 (认证用户)1、编写登录页面login.jsp2、编写登陆成功的主页面3、在登陆页面留出接口4、编写controller层业务5、编写拦截器6、在spring-mvc.xml的配置文件中注册拦截器2、文件上传1、第一种方式1、... -
求各位大神不吝源代码呀
2015-12-17 12:10:20程序要求: 1. 项目名称:基于JSP的公告系统 2. 功能说明: ...2) 增加新的功能,如支持图片内容、文件上传、公告删除回收站、分页显示、权限过滤(登陆验证)、登录验证码、公告发布审核、MD5加密等。 -
企业竞争对手电子化监控系统(CIS)+电话本管理系统(Telephone)
2009-03-09 22:32:10项目名称:企业竞争对手电子化监控系统(CIS) 项目委托方:国家科技部-西南信息中心 ...电话本管理系统分为登录系统,注册用户,验证注册信息,管理用户(删除修改),批量删除,筛选管理用户6个模块。 -
java web技术开发大全(最全最新)
2012-10-10 07:21:38第6章 用Servlet和JSP实现注册登录系统 第2篇 Struts 2篇 第7章 编写Struts 2的第一个程序 第8章 Struts 2进阶 第9章 Struts 2的* 第10章 Struts 2的类型转换 第11章 Struts 2的输入校验 第12章 文件的上传和... -
基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)
2011-03-12 10:44:33因此,在具体设计实现该博客网站时,主要考虑了主流博客网站的几个主要功能:(1)博客的注册、登录验证功能(2) 网络用户通过关键字搜索博文功能(3) 最热门博客页面推荐浏览(4) 文章详细内容及相关评论显示(5) 博客... -
Java Web开发技术大全
2014-11-05 14:35:40第6章 用Servlet和JSP实现注册登录系统 第2篇 Struts 2篇 第7章 编写Struts 2的第一个程序 第8章 Struts 2进阶 第9章 Struts 2的* 第10章 Struts 2的类型转换 第11章 Struts 2的输入校验 第12章 文件的... -
java web开发技术大全
2014-01-08 15:11:52第6章 用Servlet和JSP实现注册登录系统 第2篇 Struts 2篇 第7章 编写Struts 2的第一个程序 第8章 Struts 2进阶 第9章 Struts 2的* 第10章 Struts 2的类型转换 第11章 Struts 2的输入校验 第12章 文件的... -
当当网完整版-北大青鸟
2015-12-10 09:28:39如果用户未登录,显示"欢迎"和登录,注册按钮 ------------产品浏览-------------- 1.main.jsp编辑推荐区域 随机显示2个商品.数据项源于 d_product dp join d_book db on(dp.id=db.id) ------------------------ 2.... -
当用户没有账号的时候,提示用户进行注册,从登录界面切换到注册界面,注册需要通过手机号码获取验证码,后台通过页面传递的手机号码,随机生成4位数的验证码并且缓存,之后通过发送139邮箱的方式发送到指定的手机,...
-
Java Web开发实战1200例(第2卷)(完整版).(清华出版.卢瀚.王春斌).part1
2016-06-13 20:03:04实例078 插入用户登录日志信息 实例079 生成有规律的编号 实例080 生成没有规律的编号 实例081 在插入数据时过滤掉危险字符 实例082 将用户选择的爱好信息以字符串形式保存到数据库 实例083 实现跨数据库的表内容... -
java源码包---java 源码 大量 实例
2013-04-18 23:15:26当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新... -
Java开发实战1200例.第2卷.part3
2013-05-08 22:46:34实例078 插入用户登录日志信息 150 实例079 生成有规律的编号 151 实例080 生成没有规律的编号 153 实例081 在插入数据时过滤掉危险字符 154 实例082 将用户选择的爱好信息以字符串形式 保存到数据库 155 实例083 ... -
Java开发实战1200例.第2卷.part2
2013-05-08 22:45:35实例078 插入用户登录日志信息 150 实例079 生成有规律的编号 151 实例080 生成没有规律的编号 153 实例081 在插入数据时过滤掉危险字符 154 实例082 将用户选择的爱好信息以字符串形式 保存到数据库 155 实例083 ... -
Java开发实战1200例.第2卷.part1
2013-05-08 22:44:13实例078 插入用户登录日志信息 150 实例079 生成有规律的编号 151 实例080 生成没有规律的编号 153 实例081 在插入数据时过滤掉危险字符 154 实例082 将用户选择的爱好信息以字符串形式 保存到数据库 155 实例083 ...