Package Webdemo;import Java.io.ioexception;import Javax.servlet.servletexception;import Javax.servlet.http.httpservlet;import Javax.servlet.http.httpservletrequest;import Javax.servlet.http.httpservletresponse;public class Dbservlet extends HttpServlet {//Connection object to connect to the database protected Java.sql.Connection conn = null;//methods to execute various SQL statements protected Java.sql.ResultSet Execsql (String Sql,object...args) throws exception{//establish PreparedStatement object Java.sql.PreparedStatement pstmt = conn.preparestatement (sql);//For PSMT Object Set SQL parameter value for (int i=0;i<args.length;i++) {pstmt.setobject (i+1, args[i]); Set SQL parameter set}pstmt.execute (); Execute SQL statement return Pstmt.getresultset ();} Verify that the verification code entered by the user is valid protected Boolean Checkvalidationcode (HttpServletRequest request,string validationcode) {String Validationcodesession = (String) request.getsession (). getattribute ("Validation_code"); if (validationcodesession = = NULL) {//Get verification code is null
Set result.jsp required result information Request.setattribute ("info", "Verification Code expires");//Set login.jsp required error message Request.setattribute ("Codeerror" , "Verification Code expires"); return false;} if (Validationcode.equalsignorecase (validationcodesession) ==false) {//Two verification codes compare Request.setattribute ("info", "Captcha expired" ); Request.setattribute ("Codeerror", "Verification Code expires"); return false;} return true;} @Overrideprotected void Service (HttpServletRequest req, HttpServletResponse resp) throws Servletexception, IOException {TRY{IF (conn = = null) {//Create context object Javax.naming.Context CTX = new Javax.naming.InitialContext ();// Gets the data source Javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup ("Java:/comp/env/jdbc/webdb"); conn = Ds.getconnection (); Connection Assignment}}catch (Exception e) {}} @Overridepublic void Destroy () {try{if (conn!=null) {Conn.close ()}} catch (Exception e) {}}}
Another way to do this:
Connection Cn=null; Class.forName ("Com.mysql.jdbc.Driver"). newinstance (); String url= "JDBC:MYSQL://LOCALHOST:3306/T_USER?USEUNICODE=TRUE&CHARACTERENCODING=GBK"; String user= "root"; String password= "root"; Cn=drivermanager.getconnection (Url,user,password);
Configuring in Tomcat's Server.xml
<context path= "/webdemo" docbase= "Webdemo" debug= "0" > <resource name= "jdbc/webdb" auth= "Container" type= "Javax.sql.DataSource" driverclassname= "Com.mysql.jdbc.Driver" url= "Jdbc:mysql://localhost : 3306/webdb?characterencoding=utf-8 " username=" root " password=" 1234 " maxactive=" " maxidle=" "Maxwait=" " /></context>"
Register Inheritance Dbservlet
Package Webdemo;import Java.io.ioexception;import Javax.servlet.requestdispatcher;import Javax.servlet.servletexception;import Javax.servlet.http.httpservletrequest;import Javax.servlet.http.httpservletresponse;public class Register extends Dbservlet {@Overrideprotected void service ( HttpServletRequest request, HttpServletResponse response) throws Servletexception, IOException {String userName = null; if (Request.getparameter ("login")!=null) {response.sendredirect ("/webdemo/login.jsp");//redirect Write absolute path return;} Try{super.service (request, response);//Open Database username = request.getparameter ("username"); String Password = request.getparameter ("password"); String email = request.getparameter ("email"); String Validationcode = Request.getparameter ("Validation_code"); if (username==null| | password==null| | Validationcode==null) {return;} if (Username.equals ("") | | Password.equals ("") | | Validationcode.equals ("")) {return;} Encode the conversion to support the Chinese user name userName = new String (username.getbytes ("iso-8859-1"), "UTF-8"), Request.setattribute ("Page ","/webdemo/register.jsp "),//requestscope inside can call absolute address jump register.jspif (request, Validationcode)) {return;} email = (email = = null)? ": email; String passwordMD5 = Webdemo. Encrypter.md5encrypt (password); String sql = "INSERT into T_users (User_name,password_md5,email) VALUES (?,?,?)"; Execsql (Sql,username,passwordmd5,email); Request.setattribute ("Info", "User registration successful! ");} catch (Exception e) {System.out.println (E.getmessage ()); Request.setattribute ("Info", username+ "is already used!) ");} Finally{requestdispatcher Rd =request.getrequestdispatcher ("/result.jsp"); Rd.forward (request, Response);}}}
Response.sendredirect ("/webdemo/login.jsp");//redirect Write absolute path
Request.setattribute ("page", "/webdemo/register.jsp"),//requestscope inside can call absolute address jump register.jsp
register.jsp
<%@ page language= "java" contenttype= "text/html; Charset=utf-8 "pageencoding=" Utf-8 "%><! DOCTYPE HTML PUBLIC "-//w3c//dtd HTML 4.01 transitional//en" "Http://www.w3.org/TR/html4/loose.dtd" >Img.src= "<%= Request.getcontextpath ()%>/servlet/validationcode?d=" +time;//Verification Code Refresh
Register_form.submit (); Submit User Registration Information
Login Inherits Dbservlet
Package Webdemo;import Java.io.ioexception;import Java.sql.resultset;import javax.servlet.requestdispatcher;import Javax.servlet.servletexception;import Javax.servlet.http.httpservletrequest;import Javax.servlet.http.httpservletresponse;public class Login extends Dbservlet {@Overrideprotected void service ( HttpServletRequest request, HttpServletResponse response) throws Servletexception, IOException {if ( Request.getparameter ("register")!=null) {response.sendredirect ("/webdemo/register.jsp"); return;} String page = "/login.jsp"; String userName = ""; Try{super.service (request, response); userName = Request.getparameter ("UserName"); String Password = request.getparameter ("password"); String Validationcode = Request.getparameter ("Validation_code"); if (userName = = null| | Password = = null| | Validationcode = = null) {return;} if (Username.equals ("") | | Password.equals ("") | | Validationcode.equals ("")) {return;} UserName = new String (username.getbytes ("iso-8859-1"), "Utf-8"), if (!checkvalidationcode (request,validationCode) {return;} String sql = "Select User_name,password_md5 from t_users where user_name =?"; ResultSet rs = execsql (sql, new object[] {userName}), if (rs.next () = = False) {Request.setattribute ("Usererror", username+ "does not exist");} Else{string passwordMD5 = Webdemo. Encrypter.md5encrypt (password), if (!rs.getstring ("Password_md5"). Equals (PasswordMD5)) {Request.setattribute (" Passworderror "," Password is incorrect ");} Else{page = "/main.jsp";}}} catch (Exception e) {}finally{request.setattribute ("username", username); RequestDispatcher rd = request.getrequestdispatcher (page); Rd.forward (request, Response);}} Login.jsp
<%@ page language= "java" pageencoding= "Utf-8"%><! DOCTYPE HTML PUBLIC "-//w3c//dtd HTML 4.01 transitional//en" "Http://www.w3.org/TR/html4/loose.dtd" > Validationcode
Package Webdemo;import Java.awt.color;import Java.awt.font;import java.awt.graphics;import Java.awt.image.bufferedimage;import Java.io.ioexception;import Java.io.outputstream;import java.util.Random; Import Javax.imageio.imageio;import Javax.servlet.servletexception;import Javax.servlet.http.httpservlet;import Javax.servlet.http.httpservletrequest;import Javax.servlet.http.httpservletresponse;import Javax.servlet.http.httpsession;public class Validationcode extends HttpServlet {private static String Codechars = "% # 23456789qwaszxerdfcvtgbnhyujmkioplZAQWSXCDERFVBGTYHNMJUIKLOP ";p rivate static Color getrandomcolor (int mincolor,int Maxcolor) {Random random = new random ();//Save Mincolor Max no more than 255if (Mincolor > 255) {mincolor = 255;} if (Maxcolor > 255) {maxcolor = 255;} int red = Mincolor + Random.nextint (maxcolor-mincolor); int green = Mincolor + random.nextint (maxcolor-mincolor); int blue = Mincolor +random.nextint (Maxcolor-mincolor); return new Color (Red,green,blue); @Overrideprotected void ServIce (HttpServletRequest request, httpservletresponse response) throws Servletexception, IOException {int charslength = Codechars.length ();//The following three sentences close the buffer of the client browser response.setheader ("Ragma", "No-cache"); Response.setheader ("Cache-control" , "No-cache"); Response.setdateheader ("Expires", 0);//Set the long and wide int width=90,height=20 of the graphics verification Code; BufferedImage image = new BufferedImage (WIDTH,HEIGHT,BUFFEREDIMAGE.TYPE_INT_RGB);//Get Graphics object for output text Graphics g = Image.getgraphics (); Random random=new Random (), G.setcolor (Getrandomcolor (180,250)), G.fillrect (0, 0, width, height), G.setfont (New Font (" Times New Roman ", font.italic,height)); G.setcolor (Getrandomcolor (120,180)); StringBuilder Validationcode = new StringBuilder (); String[] FontNames = {"Times New Roman", "Book Antiqua", "Arial"};for (int i=0;i<3+random.nextint (3); i++) {G.setfont ( New Font (Fontnames[random.nextint (3)],font.italic,height)), Char Codechar=codechars.charat (Random.nextint ( charslength)); Validationcode.append (Codechar); G.setcolor (Getrandomcolor (10,100)); g.drawstrING (string.valueof (Codechar), 16*i+random.nextint (7), Height-random.nextint (6));} HttpSession session = Request.getsession (); Session Storage Verification Code session.setmaxinactiveinterval (5*60); Session.setattribute ("Validation_code", Validationcode.tostring ()); Use the session on the registration page to print g.dispose () on the graph, outputstream os = Response.getoutputstream (); Imageio.write (image, "JPEG", OS);}}
Register login System (Jsp+servlet)