成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面

瀏覽:185日期:2024-03-20 18:53:58
功能介紹

本項目通過使用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 FilesJavajdk1.8.0_201jrelibext路徑下,否則會出現連接數據庫異常。引入maven依賴:

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency>創建數據庫

如果在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.代碼

<%@ page import='java.net.URLEncoder' %><%@ page contentType='text/html;charset=utf-8' pageEncoding='utf-8' language='java' %><html><head> <title>LoginServlet</title></head><body><script type='text/javascript'> function 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='http://www.piao2010.com/bcjs/index.jsp?id='+Math.random(); }</script><% response.setCharacterEncoding('utf-8'); %><form name='login' action='/LoginCl' method='post'> 用戶名:<input type='text' name='username1'><br> 密碼:<input type='password' name='passwd'><br> <input type='checkbox' name='keep' >兩周內免登陸<br> 驗證碼:<input type='text' name='code' size=10> <%--點擊圖片可進行驗證碼刷新--%> <img name='imgValidate' src = 'http://www.piao2010.com/bcjs/index.jsp' onclick='refresh()' ><br> <%--注意此處的button和submit的區別--%> <input type='button' value='登錄' onclick='validate()'> <% 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); } %></form> <form action='register.jsp' method='post'> <input type='submit' value='注冊'></form></body></html>

2.頁面如下:

jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面

驗證碼(index.jsp)

(點擊驗證碼可以實現更新驗證碼)

<script type='text/javascript'> function refresh() { src='http://www.piao2010.com/bcjs/index.jsp?id='+Math.random(); }</script><%@ page contentType='charset=UTF-8' language='java' 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();%>

jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面

登錄處理頁面(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('<a href=LoginServlet.jsp>抱歉:賬號或密碼錯誤,請注意核實信息重新輸入</a>'); 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)

<%@ page import='java.util.Date' %><%@ page contentType='text/html;charset=gb2312' pageEncoding='gb2312' language='java' import='bean.*'%><%@ page import='java.net.URLDecoder' %><html><head> <title>welcome</title></head><body><% request.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));%><jsp:useBean scope='session'/><jsp:useBean scope='session'> <jsp:setProperty name='user' property='name' param='uname'/> <jsp:setProperty name='user' property='pd' param='password'/></jsp:useBean><h1>主界面</h1><%--welcome name =<%=u%> password =<%=p%><br>--%><%--welcome name :<jsp:getProperty name='user' property='name' />--%>welcome name :<%out.println(URLDecoder.decode(user.getName(),'utf-8'));%> password:<jsp:getProperty name='user' property='pd' /><br><%--welcome name :<%out.println(session.getAttribute('username'));%>password:<%out.println(session.getAttribute('password'));%><br>--%><%--這是你第:<%=counter%>次訪問本網站!<br>--%>這是你第:<jsp:getProperty name='mycount' property='count'/>次訪問本網站!<br><a href=’LoginServlet.jsp’>返回重新登錄</a><br><% 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);%></body></html>實現注冊頁面

信息注冊(register.jsp)

注冊信息時需要對用戶輸入的密碼進行判斷:必須有數字和大小寫英文且長度在6-20之間,為了簡化代碼這里使用的是正則表達式進行判斷。

<%@ page language='java' pageEncoding='gb2312' %><html><head> <title>register</title></head><body> <h1>歡迎您進行注冊</h1> <script language='JavaScript' type='text/javascript'> function checkPassword() { var ps=/^[A-Za-z0-9]{6,20}$/; if (!ps.exec(register.password1.value)) { alert('密碼必須同時包含大小寫字母和數字且長度應該在6-20之間'); return; } register.submit(); } </script><form name='register' action='registerMessage.jsp' method='post'> 請輸入賬號:<input type='text' name='name'><br> 請輸入密碼(要求:必須包含大小寫英文和數字無非法字符,長度大于6位小于20位):<input type='password' name='password1'><br> 請選擇性別:<input name='sex' type='radio' value='男' checked>男 <input name='sex' type='radio' value='女' >女<br> 請選擇家鄉:<select name='home' > <option value='北京'>北京</option> <option value='上海'>上海</option> <option value='陜西'>陜西</option> </select> <br> 請選擇您的愛好:<input name='fav' type='checkbox' value='唱歌'>唱歌 <input name='fav' type='checkbox' value='跳舞'>跳舞 <input name='fav' type='checkbox' value='打球'>打球 <input name='fav' type='checkbox' value='玩游戲'>玩游戲<br> <input type='button' value='注冊' onclick='checkPassword()'></form></body></html>

jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面

點擊注冊后則會跳轉到注冊成功頁面,將其賬號和密碼進行存儲到數據庫中,后可以直接進行登錄。

注冊成功頁面(registerMessage.jsp)

<%@ page import='java.sql.*' %><%@ page import='Dao.UserDao' %><%@ page language='java' pageEncoding='gb2312' %><html><head> <title>message</title></head><body><h2>信息注冊成功!該用戶注冊信息如下:</h2><% 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('<a href=LoginServlet.jsp>信息注冊成功,點擊此處進行登錄</a>'); } catch (SQLException e) { e.printStackTrace(); }%></body></html>

jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面

(如下所示,數據添加成功)

jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面

功能演示

至此此項目結束,我演示一下登錄時的場景。

1.數據庫數據

jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面

2.輸入數據庫中沒有的信息

jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面

jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面

3.賬號密碼正確

jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面

ps:需要注意一定要填寫賬戶或者密碼或者驗證碼,否則則會彈出錯誤窗口。

eg:

jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面

jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面

jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面

總結

此項目需要用到的知識點比較多,其中包括 jsp,servlet,mysql,cookie, Javabean等。需要將學到的web知識聯系起來。

到此這篇關于jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面的文章就介紹到這了,更多相關jsp servlet登錄注冊內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JSP
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美一级在线视频| 亚洲三级电影在线观看| 亚洲一二三区在线| 日本一区二区三区四区| eeuss鲁一区二区三区| 日韩区在线观看| 国产精品夜夜嗨| 宅男噜噜噜66一区二区66| 精品一区二区三区免费毛片爱| 在线观看视频一区二区欧美日韩| 日本欧美在线观看| 99热在线精品观看| 亚洲影院在线观看| 噜噜噜噜噜久久久久久91| 婷婷国产v国产偷v亚洲高清| 久久男女视频| 久久超碰97中文字幕| 欧美色窝79yyyycom| 麻豆视频观看网址久久| 欧美无砖专区一中文字| 精品一区二区三区在线播放视频 | 欧美一级视频| 一级精品视频在线观看宜春院| 国产亚洲精品v| 日韩二区在线观看| 欧美乱熟臀69xxxxxx| 粉嫩av一区二区三区粉嫩| 久久综合给合久久狠狠狠97色69| 欧美一区二区| 国产精品久久久久影院色老大| 亚洲视屏一区| 亚洲午夜影视影院在线观看| 色天使色偷偷av一区二区| 久久99国产精品免费网站| 欧美一级欧美三级在线观看| 99久久99精品久久久久久| 久久这里只有精品6| 亚洲成色精品| 日韩精品91亚洲二区在线观看| 欧美亚洲动漫制服丝袜| 国产色产综合产在线视频| 大陆成人av片| 久久你懂得1024| 国产精品国产亚洲精品看不卡15| 亚洲免费观看高清完整版在线 | 精品二区久久| 五月激情综合色| 欧美男男青年gay1069videost| 国产69精品一区二区亚洲孕妇 | 婷婷国产v国产偷v亚洲高清| 欧美人牲a欧美精品| eeuss影院一区二区三区| 亚洲欧洲精品天堂一级| 亚洲欧美日韩精品一区二区| 精品一区二区三区在线播放| 精品精品国产高清一毛片一天堂| 国内精品久久久久久久影视麻豆| 亚洲丶国产丶欧美一区二区三区| 欧美日韩免费高清一区色橹橹| 99久久99久久精品国产片果冻 | jlzzjlzz亚洲女人18| 国产女人aaa级久久久级 | 激情av综合网| 国产日韩一级二级三级| 99精品福利视频| 精品在线你懂的| 国产日韩精品一区二区浪潮av| 国产欧美精品| 粉嫩久久99精品久久久久久夜| 中文字幕一区av| 在线精品视频一区二区三四 | 国产99精品在线观看| 中文字幕制服丝袜成人av| 色噜噜狠狠成人网p站| 91在线视频播放地址| 亚洲图片一区二区| 91精品国产色综合久久久蜜香臀| 在线观看成人av电影| 久久国产精品一区二区| 欧美精品一区二区三区很污很色的 | 国产一区二区在线视频| 中文字幕在线不卡| 欧美色图在线观看| 亚洲视频精品| 国产精选一区二区三区| 亚洲精品中文字幕乱码三区 | 亚洲国产成人av网| 日韩欧美你懂的| 国产日韩综合| 成人午夜激情在线| 婷婷综合另类小说色区| 国产日韩欧美高清| 欧美日韩在线观看一区二区 | 久久蜜桃精品| 欧美在线亚洲| 久久99久久99| 亚洲欧洲日韩女同| 欧美一级片在线| 国产精品夜夜夜| 91蝌蚪porny| 久久99国产精品免费| 亚洲美女视频一区| 337p粉嫩大胆色噜噜噜噜亚洲| 久久国产主播| 91一区在线观看| 久久国产精品无码网站| 一区二区三区视频在线看| 精品国产一区二区国模嫣然| 一本大道av一区二区在线播放| 亚洲图片在线观看| av一区二区三区四区| 日本美女视频一区二区| 国产精品久久久久久久久晋中| 欧美一区三区二区| 一本到不卡免费一区二区| 亚洲裸体俱乐部裸体舞表演av| 不卡av电影在线播放| 免费成人美女在线观看.| 国产精品亚洲а∨天堂免在线| 精品日韩成人av| 欧美专区日韩专区| 亚洲美女黄网| 欧美国产91| 岛国精品在线播放| 精东粉嫩av免费一区二区三区| 一区二区国产视频| 国产精品萝li| 26uuuu精品一区二区| 欧美区一区二区三区| 老司机久久99久久精品播放免费| 亚洲黄色毛片| 欧美视频网站| 不卡一卡二卡三乱码免费网站| 麻豆精品一区二区综合av| 一区二区三区四区高清精品免费观看 | 欧美日本在线一区| 久久亚洲国产精品日日av夜夜| 亚洲精品社区| 国产一区视频在线观看免费| 成人av资源在线观看| 国产寡妇亲子伦一区二区| 久久精品99久久久| 日韩成人免费看| 亚洲成人黄色小说| 亚洲精品乱码久久久久久日本蜜臀| 中文幕一区二区三区久久蜜桃| 亚洲精品一区二区三区四区高清| 欧美日韩在线观看一区二区| 久久一区二区精品| 国产精品一区二区三区观看| 一区在线免费| 欧美日韩精品免费观看视一区二区| www.日韩精品| 成人黄色在线网站| 成人黄色片在线观看| 国产高清精品久久久久| 韩国毛片一区二区三区| 久久国产麻豆精品| 久久国产精品露脸对白| 美国欧美日韩国产在线播放| 琪琪一区二区三区| 免费观看91视频大全| 亚洲午夜免费福利视频| 亚洲一区二区三区小说| 亚洲国产成人高清精品| 亚洲国产欧美在线人成| 亚洲一区二区三区在线播放| 一区二区三区精品视频| 亚洲制服丝袜一区| 亚洲成a人片在线不卡一二三区| 亚洲伊人伊色伊影伊综合网 | 91免费国产在线| caoporn国产精品| 91亚洲午夜精品久久久久久| 91欧美激情一区二区三区成人| 91社区在线播放| av午夜一区麻豆| 97精品久久久久中文字幕| 欧美一区二区三区在线免费观看| 色综合欧美在线视频区| 国产精品红桃| 一区二区三区福利| 久久一区二区三区超碰国产精品| 色一区在线观看| 在线视频你懂得一区| 欧美日韩国产综合一区二区| 91精品国产综合久久香蕉的特点| 精品免费一区二区三区| 欧美国产一区二区在线观看 | 亚洲国产精品欧美一二99| 日韩av成人高清| 国产在线一区观看| 处破女av一区二区| 欧美a级在线| 亚洲免费成人| 日本久久一区二区| 日韩欧美国产电影| 欧美国产乱子伦| 亚洲一区二区精品3399| 日韩不卡在线观看日韩不卡视频|