精华内容
下载资源
问答
  • web注册登录链接数据库
    千次阅读
    2022-02-17 21:30:55

    作者自述

    现在初学javaWeb,还没有学完,只学了一半中的一少半,这个小程序自我感觉还可以,如有更好的改进方法或者更简单的请为作者留言(不要嘲笑)

    实现步骤

    创建maven项目 配置Tomcat 这些都不细说了

    jar包

    因为要连接数据库所以一定要在maven项目下的xml文件下配置数据库的jar包依赖

        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.28</version>
        </dependency>
    

    这个千万不要忘了 重重之重

    数据库的驱动以及用户密码

    package com.li.Servlet.blit;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    public class JDBC {
        private static String url = null;
        private static String name = null;
        private static String password = null;
    
        static {
            try {
                Class.forName ( "com.mysql.cj.jdbc.Driver" );
            } catch (Exception e) {
                e.printStackTrace ( );
            }
            url = "jdbc:mysql://localhost:3306/zhiqingli?useUnicode=true&characterEncoding=utf8&useSSL=true";
            name = "root";
            password = "root";
        }
    
        public static Connection getConn() throws Exception {
            return DriverManager.getConnection ( url, name, password );
        }
    
        public static void release(Connection conn, PreparedStatement pst, ResultSet res) {
            try {
                if (res != null) {
                    res.close ( );
                }
                if (pst != null) {
                    pst.close ( );
                }
                if (conn != null) {
                    conn.close ( );
                }
            } catch (Exception e) {
                e.printStackTrace ( );
            }
    
        }
    }
    

    这个类可以直接复制使用,但要改成自己的数据库名字

    jsp页面

    登陆页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <body>
    <form action="${pageContext.request.contextPath}/test" method="get">
       <h3>账号:<input type="text" name="account"></h3>
       <h3>密码:<input type="password" name="paw"></h3>
       <h3><input type="submit" value="登陆"><a href="Register.jsp" target="_blank">注册</a></h3>
    </form>
    </body>
    </html>
    

    注册页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
       <title>注册</title>
    </head>
    <body>
    <form action="${pageContext.request.contextPath}/res" method="post">
       <h3>账号:<input type="text" placeholder="请输入注册的账号" name="number"></h3>
       <h3>密码:<input type="password" placeholder="请输入注册的密码" name="word" id="one"></h3>
       <h3>确认密码:<input type="password" placeholder="确认一遍密码" name="u" id="two"></h3>
       <input type="submit" value="提交" οnclick="show()">
    </form>
    <Script>
    function show(){
        var one = document.getElementById("one").value;
        var two = document.getElementById("two").value;
        if (one === two){
            alert("注册成功");
            window.open("index.jsp")
        }else {
            alert("两次输入的密码不一致");
        }
    }
    </Script>
    </body>
    </html>
    

    登陆成功和失败的页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
      <title>成功页面</title>
    </head>
    <body>
    <h1>登陆成功,感谢使用</h1>
    </body>
    </html>
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
      <title>失败页面</title>
    </head>
    <body>
    <h1>登陆失败,账号密码找不到或者错误</h1>
    </body>
    </html>
    

    工具类

    工具人上线

    //登陆使用的方法
    Connection conn = null;
      PreparedStatement pst = null;
      ResultSet res = null;
      boolean isQ;
       public boolean Select(String username,String paw)  {
          try {
              conn = JDBC.getConn ( );
              String sql = "SELECT * FROM `username` where `name`=? and `password`=?";
              pst = conn.prepareStatement (sql);
              pst.setObject ( 1,username );
              pst.setObject ( 2,paw );
              res = pst.executeQuery ( );
              if (res.next ()){
                  isQ = true;
                  System.out.println (res.getObject ( "name" )+" "+res.getObject ( "password" ));
                  System.out.println ("登陆成功");
              }else {
                  isQ = false;
                  System.out.println ("登陆失败");
              }
          }catch (Exception e){
              e.printStackTrace ();
          }finally {
              JDBC.release ( conn,pst,res );
          }
          return isQ;
      }
      //注册用的方法
       public void addUser(String name,String paw){
          try {
              conn = JDBC.getConn ( );
              String sql = "insert into `username`(`name`,`password`) values (?,?)";
              pst = conn.prepareStatement ( sql );
              pst.setObject ( 1,name );
              pst.setObject ( 2,paw );
              int i = pst.executeUpdate ( );
              if (i>0){
                  System.out.println ("添加成功");
              }
          }catch (Exception e){
              e.printStackTrace ();
          }finally {
              JDBC.release ( conn,pst,res );
          }
      }
    

    登陆的类

    package com.li.Servlet.test;
    
    import com.li.Servlet.blit.Way;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class index extends HttpServlet {
      @Override
      protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
          String account = req.getParameter ( "account" );
          String paw = req.getParameter ( "paw" );
          Way way = new Way ();
          if (way.Select ( account,paw )){
              resp.sendRedirect ( "/s4/true.jsp" );
          }else {
              resp.sendRedirect ( "/s4/false.jsp" );
          }
      }
    
      @Override
      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
          doGet ( req, resp );
      }
    }
    

    注册的类

    package com.li.Servlet.test;
    
    import com.li.Servlet.blit.Way;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class index02 extends HttpServlet {
      @Override
      protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
          String number = req.getParameter ( "number" );
          String word = req.getParameter ( "word" );
           String u = req.getParameter ( "u" );
        if (word.equals ( u )){
              Way way = new Way ( );
              way.addUser ( number,word );
          }else {
              //当两次密码不一致的时候浏览器响应给用户当前注册的页面
              resp.sendRedirect ( "/s4/Register.jsp" );
          }
      }
    
      @Override
      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
          doGet ( req, resp );
      }
    }
    

    两个映射路径

    <!--登陆-->
      <servlet>
          <servlet-name>test</servlet-name>
          <servlet-class>com.li.Servlet.test.index</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>test</servlet-name>
          <url-pattern>/test</url-pattern>
      </servlet-mapping>
    <!--注册-->
      <servlet>
          <servlet-name>res</servlet-name>
          <servlet-class>com.li.Servlet.test.index02</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>res</servlet-name>
          <url-pattern>/res</url-pattern>
      </servlet-mapping>
    

    思路

    登陆

    这个就是用户输入的账号和密码看看数据库里有没有,
    有的话就重定向到成功或这失败的页面,相当于浏览器响应给用户的请求结果

    注册

    相当于就是往数据库里面添加一个账号或者密码然返回到登陆页面
    这里我在注册类面没有用到重定向,而是在注册的jsp页面里判断之后跳转到登陆页面
    注意:这里为什么没在注册类里面用重定向
    因为使用重定向之后就直接返回了登陆类运行的结果
    (如有更好的思路,浏览作者 ! 谢谢)

    更多相关内容
  • Java web 简单的注册图书链接数据库,好学方便
  • 至于如何配值数据库和连接数据库,网上有很多教程,我就不多说,关键就是连接数据库用的JDBC.jar一定要有并且把它放在图中的位置。其他诸如CSS和JS可以自由发挥,不用局限于我的工程文件。工作软件我用的是eclipse和...

    1.工程文件
    在这里插入图片描述
    至于如何配值数据库和连接数据库,网上有很多教程,我就不多说,关键就是连接数据库用的JDBC.jar一定要有并且把它放在图中的位置(sqljdbc4.jar)。其他诸如CSS和JS可以自由发挥,不用局限于我的工程文件。工作软件我用的是eclipse和SQL2008R2(官网可下)

    2.Chack.jsp

    <%@ page language="java" import="java.util.*,java.sql.*" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Check Page</title>
    </head>
    <body>
    <% 
      String username="";
      String password="";
      username=request.getParameter("username");
      username=new String(username.getBytes("iso-8859-1"),"UTF-8");//编码转换,保证识别中文登录名
      password=request.getParameter("password");
      //out.println(username);
      String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
      String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=login";
      String userName="sa";//数据库用户名
      String userPwd="123456";//数据库密码
      String sql="select Username from users where Username='"+username+"'";
      String sql1="select Password from users where Password='"+password+"'";
      //out.println(sql);
      Class.forName(driverName);
      Connection stmt=DriverManager.getConnection(dbURL,userName,userPwd);
      
      Statement stmt1=stmt.createStatement();
      Statement stmt2=stmt.createStatement();
      ResultSet rs=stmt1.executeQuery(sql);
      ResultSet rs1=stmt2.executeQuery(sql1);
      if(rs.next()&&rs1.next()){
    	  request.getRequestDispatcher("suc.jsp").forward(request, response);
      }
      else{
    	  request.getRequestDispatcher("fail.jsp").forward(request, response);
      }
    %>
    </body>
    </html>
    

    3.fail.jsp

    <%@ page language="java" import="java.util.*,java.sql.*" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>登录失败</title>
    </head>
    <body>
    <%
    String username="";
    String password="";
    username=request.getParameter("username");
    password=request.getParameter("password");
    //out.println(username);
    //out.println(username);
      String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
      String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=login";
      String userName="sa";
      String userPwd="123456";
      String sql="select Username from users where Username='"+username+"'";
      String sql1="select Password from users where Password='"+password+"'";
      //out.println(sql);
      Class.forName(driverName);
      Connection stmt=DriverManager.getConnection(dbURL,userName,userPwd);
      
      Statement stmt1=stmt.createStatement();
      Statement stmt2=stmt.createStatement();
      ResultSet rs=stmt1.executeQuery(sql);
      ResultSet rs1=stmt2.executeQuery(sql1);
      if(rs.next()){
    	  out.println("密码错误,请重新登录!");
    	  %>
    	  <br><a href="Login.jsp">返回登陆</a>
    	  <%
      }
      else{
    	  out.println("用户名不存在,请注册!");
    	  %>
    	  <br><a href="zhuce.jsp">前往注册!</a>
    	  <br><a href="Login.jsp">返回登陆!</a>
      <%
      }
      %>
    </body>
    </html>
    

    4.Login.jsp

    <%@ page language="java" import ="java.util.*" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>登录界面</title>
    <link rel="stylesheet"  href="CSS/DesignPage.css"  type="text/css"/>
    </head>
    <body>
    
    <div class="center" align="center">
    	<div class="background">
    	<div class="sysname-div">
    	  <img id="logoimg" class="logoimg" src="images/logo.jpg">  
    	     <label for="logoimg"><font color="white">用户登录 </font></label>
    	</div>
    	<div class="lgmain-div">
        <div class="lgtop-div">会员,请登录</div>
    	<div class="lg-div">
        <div id="loginMessage" class="loginMessage"></div>
        
        <form action="Chack.jsp" method="post">
        <div class="login-div">
    	  <input id="username" class="username" name="username" placeholder="用户名" value="" type="text" />
    	</div>
        <div class="login-div">
    	  <input id="password" name="password" class="password" placeholder="密码" value="" type="password" />
    	</div>
        <div class="checkbox-div">
    	<input type="checkbox" id="isRemember" class="isRemember" name="isRemember"/>
    	<label for="isRemember">记住密码</label>	
    	</div>
    	<div class="btn-div">
    	<button id="loginBtn" type="submit" >&nbsp;&nbsp;&nbsp;</button>		
        </div>
        </form>
        
        </div>
        </div>
        </div>
    </div>
    </body>
    </html>
    

    5.suc.jsp

    <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>登录成功</title>
    </head>
    <body>
    <%
      String username=request.getParameter("username");
      username=new String(username.getBytes("iso-8859-1"),"UTF-8");//防止中文乱码
    %>
    欢迎您登录!<font color="red"><% out.println(username); %></font>
    </body>
    </html>
    

    6.zhuce.jsp

    <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <link rel="stylesheet" type="text/css" href="CSS/Register.css">
    <link rel="stylesheet" type="text/css" href="CSS/Register-selector.css">
    <script type="text/javascript" src="js/Register-js.js" charset="UTF-8"></script>
    <title>注册界面</title>
    </head>
    <body>
    <div class="background">
    </div>
    <div class="sysname-div">
    <img id="logoimg" class="logoimg" src="images/logo.jpg">  
    <label for="logoimg"><font color="black">用户注册 </font></label>
    </div>
    <div  class="center">
    <div class="lgmain-div">
    <div class="lgtop-div">创建新账户</div>
    <div class="lg-div">
    <form action="zhuceChack.jsp" method = "post">
    <table border="0">
        	<tr><td class="td1"></td><td class = "td2"></td>
        	<tr><td>用户 名</td><td><input class = "input1" name ="username1" type = "text"  value = ""/>
        	<span id = "username1Span" class = "span1"></span></td></tr>
        	<tr><td>密  码</td><td><input class = "input1" name = "password1" type = "password" value = ""/>
        	<span id = "passwordSpan" class = "span1"></span></td></tr>
        	<tr><td>确认密码</td><td><input class = "input1" name = "sureName" type = "password" value = ""/>
        	<span id = "surePswSpan" class = "span1"></span></td></tr>
        	<tr><td>电子邮件</td><td><input class = "input1" name = "mail" type = "text" value = ""/>
        	<span id = "mailSpan" class = "span1"></span></td></tr>
        	<tr><td>电话号码</td><td><input class = "input1" name = "telephone" type = "text" value = ""/>
        	<span id = "telephoneSpan" class = "span1"></span></td></tr>
        	<tr><td>地  址</td><td><input class = "input1" name = "adrress" type = "text" value = ""/>
        	<span id = "adrressSpan" class = "span1"></span></td></tr>
        	<tr><td><input type = "submit"   value = "注&nbsp;&nbsp;&nbsp;册"/></td>
        	<td><input type = "reset" value = "重新填写"/></td></tr>
    </table>
    </form>
    
    </div>
    </div>
    <font color="red">注:用户名和密码不能为空</font><br>
    未实现检查用户名重名和注册时密码是否为空的功能
    </div>
    
    </body>
    </html>
    

    7.zhuceChack.jsp

    <%@ page language="java" import="java.util.*,java.sql.*" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <%
    String username=request.getParameter("username1");
    username=new String(username.getBytes("iso-8859-1"),"UTF-8");//编码转换,保证识别中文登录名
    String password=request.getParameter("password1");
    String mail=request.getParameter("mail");
    String tel=request.getParameter("telephone");
    String adrress=request.getParameter("adrress");
    adrress=new String(adrress.getBytes("iso-8859-1"),"UTF-8");//编码转换,保证识别中文登录名
    //out.println(username);
      String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
      String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=login";
      String userName="sa";
      String userPwd="123456";
      String sql="insert into users(Username,Password,Mail,Telephone,Adrress) values('"+username+"','"+password+"','"+mail+"','"+tel+"','"+adrress+"')";
      //out.println(sql);
      Class.forName(driverName);
      Connection stmt=DriverManager.getConnection(dbURL,userName,userPwd);
      Statement stmt1=stmt.createStatement();
      stmt1.executeUpdate(sql);
      request.getRequestDispatcher("zhucesuc.jsp").forward(request, response);
    %>
    </body>
    </html>
    

    8.zhucesuc.jsp

    <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>注册成功</title>
    <link rel="stylesheet" type="text/css" href="CSS/Register.css">
    </head>
    <body>
    <%
      String username=request.getParameter("username1");
      username=new String(username.getBytes("iso-8859-1"),"UTF-8");//编码转换,保证识别中文登录名
      String password=request.getParameter("password1");
      String mail=request.getParameter("mail");
      String tel=request.getParameter("telephone");
      String adrress=request.getParameter("adrress");
      adrress=new String(adrress.getBytes("iso-8859-1"),"UTF-8");//编码转换,保证识别中文登录名
    %>
    <div class="background">
    <div  class="center">
    <div class="lgmain-div">
    <div class="lgtop-div">注册成功!</div><br><br>
    <table border="0">
    <tr><td>用户名:<font color="black"><% out.println(username); %></font></td></tr>
    <tr><td>密码:<font color="black"><% out.println(password); %></font></td></tr>
    <tr><td>电子邮件:<font color="black"><% out.println(mail); %></font></td></tr>
    <tr><td>电话:<font color="black"><% out.println(tel); %></font></td></tr>
    <tr><td>地址:<font color="black"><% out.println(adrress); %></font></td></tr>
    </table>
    <br><a href="Login.jsp">前往登陆</a>
    </div>
    </div>
    </div>
    </body>
    </html>
    

    9.数据库样式
    在这里插入图片描述
    在这里插入图片描述

    效果:

    登录

    在这里插入图片描述

    在这里插入图片描述

    登录成功
    在这里插入图片描述

    登录失败
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    注册界面
    在这里插入图片描述
    注册成功
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 简单的网页登录,表单的提交,servlet的处理,mysql数据库链接
  • index.jsp:选择跳转到登录注册页; login.jsp:提供用户的登录表单,可以输入用户名和密码; dologin.jsp:登录检查页,根据表单提交数据验证权限,并跳转到登录成功页; login_success.jsp:登录成功页,显示...

    数据库准备

    首先用mysql建一个数据库java_test,在这个数据库中建一个表td_user。

    导入mysql 驱动包

    在项目\webapp\WEB-INF\lib引入mysql 驱动包。

     

    程序实现思路(相关页面阐述)

    index.jsp:选择跳转到登录或注册页;

    login.jsp:提供用户的登录表单,可以输入用户名和密码;

    dologin.jsp:登录检查页,根据表单提交数据验证权限,并跳转到登录成功页;

    login_success.jsp:登录成功页,显示欢迎信息;

    register.jsp:提供用户的注册表单,可以输入注册新用户的用户名和密码;

    doregister.jsp:注册执行页,将注册的新用户信息导入数据库;

    register_success.jsp:注册成功页,可以跳转到登录页。

    程序实现

    1.index.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Insert title here</title>
    </head>
    <body>
    <div align="center">
    <a href="login.jsp">登录</a><br>
    <a href="register.jsp">注册</a><br>
    </div>
    </body>
    </html>

    2.login.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>登录页</title>
    <script type="text/javascript">
    		function check(){
    			var username=document.getElementById("userName").value;
    			var password=document.getElementById("userPwd").value;
    			if(username==''){
    				alert("用户名不能为空");return false;
    				}
    			else if(password==''){
    				alert("密码不能为空");return false;
    				}
    			else{
    				return true;
    				}
    		}
    </script>
    </head>
    <body>
        <form action="dologin.jsp" method="post">
            用户名:<input type="text" name="userName" id="userName" /><br/>
            密码:<input type="password" name="userPwd" id ="userPwd" /><br/>
            <input type="submit" value="提交" onclick="return check()">
        </form>
    </body>
    </html>

     3.dologin.jsp

    <%@ page contentType="text/html" pageEncoding="utf-8"%>
    <%@ page import="java.sql.*"%>
    <%@page import="java.sql.Connection"%>
    <%@page import="java.sql.ResultSet"%>
    <%@page import="java.sql.DriverManager"%>
    <%@page import="java.sql.PreparedStatement"%>
    <html>
    <head>
    <title>登录验证</title>
    </head>
    <body>
    <% String name=request.getParameter("userName").toString();
        String passwd=request.getParameter("userPwd").toString();
       
    	try {
    		Class.forName("com.mysql.cj.jdbc.Driver");
    		String url="jdbc:mysql://localhost:3306/java_test?serverTimezone=UTC&useSSL=false&characterEncoding=UTF-8";
    		String username="root";
    		String password="1234";
    		Connection conn=DriverManager.getConnection(url,username,password);
    		String sql="select * from tb_user where userName=? ";
    		PreparedStatement ps=conn.prepareStatement(sql);
    		ps.setString(1, name);
    		ResultSet rs=ps.executeQuery();
    		out.print("警告:  ");
    		rs.next();
    		
    		if((rs.getString("userPwd")).equals(passwd))
    		{out.print("登录成功");
    		request.setAttribute("userName",name);
    
    		request.getRequestDispatcher("login_success.jsp").forward(request, response);
    		
    		}
    		else {out.print("密码错误");}
    			
    		
    		ps.close();
    		conn.close();
    	}catch(Exception e) {
    		out.print("登录失败");
    		e.printStackTrace();
    	}
    
    	%>
    	<br>
    	<a href="login.jsp">返回</a>
    </body>
    </html>

    4.login_success.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
        <title>登录成功</title>
    </head>
    <body>
    欢迎,<%=request.getAttribute("userName")%>
    <a href="login.jsp">返回</a>
    </body>
    </html>
    

    5.register.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>注册页</title>
    <script type="text/javascript">
       function check1(){
    	  var username=document.getElementById("userName").value;
    	  var password=document.getElementById("userPwd").value;
    	if(username==''){
    		alert("用户名不能为空");return false;
    		}
    	else if((password=='')){
    		alert("密码不能为空"); return false;
    		}
    	else{
    	return true;
    		}
    	
    	}
    
    </script>
    </head>
    <body>
        <form action="doregister.jsp" method="post">
            用户名:<input type="text" name="userName" id="userName"/><br/>
            密码:<input type="password" name="userPwd" id="userPwd"/><br/>
            <input type="submit" value="注册" onclick="return check1()"/>
        </form>
    </body>
    </html>

    6.doregister.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
      <%@ page import="java.sql.*"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <%
    	String username=new String(request.getParameter("userName"));
    	String password=new String(request.getParameter("userPwd"));
    		// 数据库连接字符串
    		Class.forName("com.mysql.jdbc.Driver");
    		String url = "jdbc:mysql://localhost:3306/java_test?serverTimezone=UTC&useSSL=false&characterEncoding=UTF-8";
    		// 数据库用户名
    		String usename = "root";
    		// 数据库密码
    		String psw ="1234";
    		Connection conn=DriverManager.getConnection(url,usename,psw); //创建连接
    		String sql="insert into tb_user(userName,userPwd) values('"+username+"','"+password+"')";
    		  Statement stmt=conn.createStatement();                     //获取statement对象
    		  stmt.executeUpdate(sql);                                   //执行添加用户的sql语句
    		  request.getRequestDispatcher("register_success.jsp").forward(request, response);  //请求转发到register_success.jsp
    		
    		
    %>
    </body>
    </html>
    
    

    7.register_success.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>注册成功</title>
    </head>
    <body>
    注册成功!
    <a href="login.jsp">返回登录</a>
    </body>
    </html>
    

    展开全文
  • SQLite Home Page - SQLite 官方网站提供了最新的 SQLite 安装版本,最新的 SQLite 资讯以及完整... Saito 开发的,是一个用于 Java 中访问和创建 SQLite 数据库文件的库。 DBD-SQLite-0.31 - SQLite Perl driver 驱动

    什么是SQLite

    SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。

    以下是一些关于SQLite学习的有用的网站:

    1、SQLite Home Page - SQLite 官方网站提供了最新的 SQLite 安装版本,最新的 SQLite 资讯以及完整的 SQLite 教程。
    2、PHP SQLite3 - 网站提供了 SQLite 3 数据库的 PHP 支持的完整细节。
    3、DBD-SQLite-0.31 - SQLite Perl driver 驱动程序与 Perl DBI 模块一起使用。
    4、DBI-1.625 - Perl DBI 模块为包括 SQLite 在内的任何数据库提供了通用接口。
    5、SQLite Python - sqlite3 python 模块由 Gerhard Haring 编写的。它提供了与 DB-API 2.0 规范兼容的 SQL 接口。

    项目简述

    本次的APP主要要实现两个功能:
    1、实现数据库的操作(创建数据库、存入数据——注册、查询并使用数据——登录)。
    2、基本的页面跳转以及跳转时数据的携带。

    布局文件

    activity_main.xml
     <GridLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:rowCount="5"
            android:columnCount="2">
            <TimePicker
                android:layout_columnSpan="2"/>
            <TextView
                android:text="用户名:"
                android:layout_row="1"
                android:layout_column="0"
                android:layout_marginLeft="65dp"
                />
            <EditText
                android:id="@+id/username"
                android:layout_row="1"
                android:layout_column="1"
                android:layout_marginLeft="-200dp"
                android:ems="7"
                />
            <TextView
                android:text="密码:"
                android:layout_row="2"
                android:layout_column="0"
                android:layout_marginLeft="80dp"
                />
            <EditText
                android:id="@+id/password"
                android:layout_row="2"
                android:layout_column="1"
                android:inputType="textPassword"
                android:layout_marginLeft="-200dp"
                android:ems="7"
                />
            <LinearLayout
                android:weightSum="1.5"
                android:layout_gravity="center"
                android:layout_marginTop="20dp"
                android:layout_marginLeft="50dp"
                >
                <Button
                    android:id="@+id/login"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="登录"
                    android:layout_weight="0.5"
                    />
                <Button
                    android:id="@+id/resign"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="注册"
                   android:layout_weight="0.5" />
                <Button
                    android:id="@+id/btn_new"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="重置"
                    android:layout_weight="0.5"
                    />
            </LinearLayout>
            <DatePicker
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="invisible"
                android:layout_columnSpan="2"/>
        </GridLayout>
    

    效果如下:
    在这里插入图片描述

    activity_success.xml
      <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:orientation="vertical"
            >
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="网上购书系统"
                android:textSize="25dp"
                android:textColor="@android:color/holo_blue_light"
                />
            <TextView
                android:id="@+id/tv_welcome"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="xxx 您好"
                android:textSize="25dp"
                android:textColor="@android:color/holo_red_light"
                />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="欢迎光临"
                android:textSize="20dp"
                android:textColor="@android:color/holo_red_light"
                />
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:src="@drawable/hello"/>
            <TextView
                android:id="@+id/tv_time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="登录时间:xxxx-xx-xx"
                android:layout_marginTop="10dp"
                />
            <Button
                android:id="@+id/btn_back"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dp"
                android:text="返回"
                android:textSize="20dp"/>
        </LinearLayout>
    

    效果如下:
    在这里插入图片描述

    activity_fault.xml
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:orientation="vertical"
            >
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="网上购书系统"
                android:textSize="25dp"
                android:textColor="@android:color/holo_blue_light"
                />
            <TextView
                android:id="@+id/tv_welcome"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="密码错误!"
                android:textSize="25dp"
                android:textColor="@android:color/holo_red_light"
                />
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:src="@drawable/hello"/>
            <TextView
                android:id="@+id/tv_time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="请返回重新登录"
                android:layout_marginTop="10dp"
                />
            <Button
                android:id="@+id/btn_back"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dp"
                android:text="返回"
                android:textSize="20dp"/>
        </LinearLayout>
    

    效果如下:
    在这里插入图片描述

    数据库的创建

    要想实现安卓app连接数据库,首先我们要创建一个我们所需要的数据库,值得一提的是,因为是移动设备上的app,所以这个数据库的应用和web的数据库还是有一些区别的,最显著的一点就是我们要用代码来实现数据库的创建,并且这个数据库是直接保存在我们的移动设备上的。

    DateBaseHelper.java

    这里面我们撰写了DateBaseHelper这个类来实现SQLiteOpenHelper这个方法。

    /**
    *DATEBASE_NAME是我们数据库的名字,VERSION_CODE是数据库的版本号,
    *TABLE_NAME是我们数据库中的表的名字;
    *像这种常量我们之后会定义到Constants.java文件中
    */
    public class DateBaseHelper extends SQLiteOpenHelper {
        private static final  String TAG="DatabaseHelper";
        public DateBaseHelper(@Nullable Context context) {
            super(context, Constants.DATEBASE_NAME, null, Constants.VERSION_CODE);
        }  
    
    //创建数据库(这只会在程序第一次运行时生效,db文件会被储存在移动设备中,下次运行不会重复创建)
        public void onCreate(SQLiteDatabase db) {
            Log.d(TAG,"创建数据库...");
            //创建数据库中的字段,这里只创建了一个name字段和一个password字段
            String sql ="create table "+Constants.TABLE_NAME+"(name varchar(20),password varchar(20))";
            db.execSQL(sql);
        }
    
    //实现增
        public void insert(SQLiteDatabase sqLiteDatabase, String name,String password){
        //声明键值对values
            ContentValues values=new ContentValues();
        //分别插入名为name和password的值到键值对values的"name"和"password"字段中
            values.put("name",name);
            values.put("password",password);
        //将键值对values插入到数据库中
            sqLiteDatabase.insert(Constants.TABLE_NAME,null,values);
        }
    
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            //升级数据库时的回调(升级前需要更改版本号)
            Log.d(TAG,"升级数据库...");
        }
    }
    
    Constants.java
    public class Constants {
        public static String DATEBASE_NAME="10_14homework.db";//数据库名
        public static int VERSION_CODE= 1;//版本号
        public static final String TABLE_NAME="customers";//表名
    }
    

    APP的编写

    DateUtil.java

    因为我们的app在登陆后有一个实时返回登录时间的功能,如下图:
    在这里插入图片描述
    为了让时间能按照我们预想的格式输出,所以我撰写了一个DateUtil类来存放时间的格式,其实这里面就只用到了一个类:SimpleDateFormat(格式化地输出系统时间)

    public class DateUtil {
    //这里列举了3个比较常用的时间展现格式,这个自由度很高,可以根据自己的需求来设计
        public static String getNowDateTime() {
        //年-月-日 时:分:秒
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
            return sdf.format(new Date());
        }
    
        public static String getNowTime() {
         //时:分:秒
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 
            return sdf.format(new Date());
        }
    
        public static String getNowTimeDetail() {
        //时:分:秒.毫秒
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");  
            return sdf.format(new Date());
        }
    
    }
    
    MainActivity.java
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //变量声明
        SQLiteDatabase sqLiteDatabase;
        DateBaseHelper helper;
        private EditText username;
        private EditText password;
        private String name_str;
        private String paswd_str;
        private Button resign;
        private Button login;
        private Button btn_new;
        private String mstr="";
        private final static String TAG="MainActivity";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            //控件定位
            helper=new DateBaseHelper(this);  //传递上下文
            username=(EditText) findViewById(R.id.username);
            password=(EditText) findViewById(R.id.password);
            resign=(Button) findViewById(R.id.resign);
            login=(Button) findViewById(R.id.login);
            btn_new=(Button)findViewById(R.id.btn_new);
            
            //①以读写的方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用的是getWritableDatabase() 方法就会出错
            //②还有一个getReadableDatabase()方法也是以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试
            //以只读方式打开数据库。如果该问题成功解决,则只读数据库对象就会关闭,然后返回一个可读写的数据库对象。
            sqLiteDatabase = helper.getWritableDatabase();
            
            //设置按钮监听
            resign.setOnClickListener(this);
            login.setOnClickListener(this);
            btn_new.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            // 通过id来分配按钮事件
            switch (v.getId()) {
            //注册按钮功能
                case R.id.resign:
                //注册相关的弹窗设定,如果确定提交,则完成注册,数据存入数据库
                //AlerDialog:对话框控件
                    new AlertDialog.Builder(MainActivity.this).setTitle("系统提示")
                            .setMessage("是否确定提交?")
                            //为确定按钮配置监听
                            .setPositiveButton("确定", new DialogInterface.OnClickListener() {
    
                                @Override
                                public void onClick(DialogInterface arg0, int arg1) {
                                    // 获取EditView中的内容,并将其转化成字符串型后存入变量中
                                    name_str = username.getText().toString();
                                    paswd_str = password.getText().toString();
                                    
                                    //给数据表设置游标,Cursor是一个游标,以name字段为依据,query是一种根据条件获取数据的方法
                                    Cursor cursor = sqLiteDatabase.query(Constants.TABLE_NAME, new String[]{"name"}, "name=?", new String[]{name_str}, null, null, null);
                                    //如果游标找到了所需要的name,则返回已注册,否则就利用之前写的insert方法插入数据
                                    if (cursor.getCount() != 0) {
                                        Toast.makeText(MainActivity.this, "该用户已注册!", Toast.LENGTH_SHORT).show();
                                    } else {
                                        helper.insert(sqLiteDatabase, name_str, paswd_str);
                                        Toast.makeText(MainActivity.this, "注册成功,请登录!", Toast.LENGTH_SHORT).show();
                                    }
                                }
                            }).setNegativeButton("返回", new DialogInterface.OnClickListener() {
    
                        public void onClick(DialogInterface arg0, int arg1) {
                            //这个是点击返回后的操作,因为不需要,所以不管他直接跳出就好。
    
                        }
                    }).show();
                    break;
                    
              //登录按钮功能,上面解释过的已省略
                case R.id.login:
                    String user_str = username.getText().toString();
                    String psw_str = password.getText().toString();
                    //账号或密码为空时
                    if (user_str.equals("")) {
                        Toast.makeText(this, "账号或密码不能为空", Toast.LENGTH_SHORT).show();
                    }else {
                        Cursor cursor = sqLiteDatabase.query(Constants.TABLE_NAME, new String[]{"password"}, "name=?", new String[]{user_str}, null, null, null);
                        //游标的遍历,寻找name对应的password的值
                        if(cursor.moveToNext()){
                            String psw_query=cursor.getString(cursor.getColumnIndex("password"));
                            //用户名对应的密码与输入的密码相同时
                            if(psw_str.equals(psw_query)){
                                Toast.makeText(this, "登录成功!", Toast.LENGTH_SHORT).show();
                                //跳转到successActivity页面
                                Intent intent=new Intent (MainActivity.this,successActivity.class);
                                //intent会携带上mstr的值并以username命名
                                intent.putExtra("username",mstr);
                                //开始跳转事件
                                startActivity(intent);
                                break;
                            }
                            //密码输入错误时
                            else{
                            //跳转到FaultActivity页面
                                Intent intent2=new Intent(MainActivity.this,FaultActivity.class);
                                startActivity(intent2);
                            }
                        }
                        //遍历完后发现在表中找不到游标携带的name的值时
                        else{
                            Toast.makeText(this, "账号不存在,请先注册!", Toast.LENGTH_SHORT).show();
                        }
                    }
                    break;
    
             //重置按钮功能
                case R.id.btn_new:
                //将EditView的文本清空
                    username.setText("");
                    password.setText("");
                    break;
                default:
                    break;
            }
        }
    }
    

    登录成功和失败后的页面编写

    successfulActivity.java
    public class successActivity extends AppCompatActivity implements View.OnClickListener {
    	//变量声明
        private String mStr="";
        private String mTime;
        private final static String TAG="successActivity";
        private TextView tv_welcome;
        private TextView tv_time;
        private Button btn_back;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_success);
            btn_back=(Button)findViewById(R.id.btn_back);
            logintime();
            welcome();
            btn_back.setOnClickListener(this);
        }
    
    //返回登录时间
        private void logintime() { 
            tv_time=(TextView)findViewById(R.id.tv_time);
            //用DateUtil中的getNowDateTime格式返回登录时间
            mTime = String.format("登录时间 %s", DateUtil.getNowDateTime());
            tv_time.setText(mTime);
        }
    
    //将之前跳转时携带的用户信息用到欢迎界面中
        private void welcome(){
        //获取intent
            Intent intent=getIntent();
            //获取intent中名为username的数据的值
            String username = intent.getStringExtra("username");
            tv_welcome=(TextView)findViewById(R.id.tv_welcome);
            mStr=String.format("%s 您好", username);
            tv_welcome.setText(mStr);
        }
    
        @Override
        //返回  实现跳转回到登录界面
        public void onClick(View v) {
            Intent intent2=new Intent(successActivity.this,MainActivity.class);
            startActivity(intent2);
        }
    }
    
    FaultActivity.java
    //这个页面没有什么花里胡哨的
    public class FaultActivity extends AppCompatActivity implements View.OnClickListener {
    
        private Button btn_back;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_fault);
            btn_back=(Button)findViewById(R.id.btn_back);
            btn_back.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(FaultActivity.this,MainActivity.class);
            startActivity(intent);
        }
    }
    
    展开全文
  • 先创建一数据库登录有动态ASP页面和HTML页面,注册页面类似,注册成功后把数据提交到数据库,再在登录页面可以登录成功
  • 当然可以在登录界面中点击注册链接,跳转到注册页面中进行注册(注:只能注册用户的,没有管理员注册!这是该系统中的一个问题)。 登录进去后进入主界面main.jsp中。在该界面中,可以点击修改用户信息,密码等...
  • JSP用户登录连接数据库

    千次阅读 多人点赞 2021-09-04 08:44:08
    数据库一一对应 lombok生成get set方法 package com.ftzlover.demo.po; import lombok.Getter; import lombok.Setter; @Getter @Setter public class User { private Integer userId; // 用户ID private String...
  • 1.java web本地服务器,链接数据库实现数据库增、查功能 2.android端通过http访问web服务器 一、web端 1.myeclipse新建java web项目 工程目录 2.web.xml如下配置 <?xml version="1.0" encoding="UTF-8"?> <...
  • 用C#写的一个登陆注册的程序,实现了和数据库的动态链接,可以修改数据库的增删查改
  • [WebApi]appsettings.json 数据库连接

    千次阅读 2022-01-18 14:30:58
    WebApi项目中的AppSettings.Json, 笔者学习时在实体库新建一个json文件读取不到 "ConnectionStrings": { "DefaultConnection": "Data Source=.;Initial Catalog=DataBaseName;User Id=UserName;Password=Password;...
  • Net Core 6.0 webApi+sqlServer数据库教程实战教程前言安装net core 环境构建wepApi项目操作数据库如何改变文本的样式相关快速扩展总结生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一...
  • Java web 服务器连接MySQL数据库代码

    万次阅读 多人点赞 2020-03-16 17:23:42
    本文内容分为两部分,分别是java web连接MySQL数据库,java web数据库进行基本数据操作。附加代码。
  • java web实现简单登录注册(eclipse,mysql)

    千次阅读 热门讨论 2022-04-26 16:43:55
    使用eclipse 链接MySQL实现简单的登录注册
  • ASP.NET连接数据库实现登录注册

    千次阅读 2020-08-18 10:52:39
    连接数据库 在连接之前,我们先在数据库中建立数据表以及待会要用到的数据 创建连接数据库的类 右击项目->添加新项 选择类 点击是 创建好的类如下 连接数据库呢我们肯定需要用到一些关于...
  • 老师布置了一份作业,要求我们写一个注册登录界面,同时需要向数据库传递数据,这个作业我研究了四五天才做好,其中走过的坑数不胜数,很多同学可能在网上找到了代码但是不知道如何使用,我在这里就把我当初完成这个...
  • 打开localhost:8080链接,进入kb-dms数据库管理平台首页 页面自动跳转到登录页面 点击登录框,右上角的按钮,页面跳转到注册页面 注册成功后,页面自动跳转到登录页面 输入注册的账号密码,点击回车键(或登录按钮)...
  • Android通过Web与后台数据库交互

    千次阅读 多人点赞 2019-10-11 00:57:15
    开发一个app与后台数据库交互,基于mysql+jdbc,没有使用DBUtils或jdbc框架,纯粹底层jdbc实现. 2.开发环境 系统 : win10 IDE : Android Studio 3.5.1,IntelliJ IDEA 2019.02 DBMS : Mysql 8.0....
  • 初学者一定要做的便是用户的注册登录,同时牵涉到数据库的相关操作,可以利用Navicat建立一个简单的数据库,在里面更新、插入一些数据。之后写python文件对数据库进行操作,我们可以写一个MysqlHelp.py文件帮助...
  • JavaWeb连接数据库

    千次阅读 2022-03-08 14:09:36
    通过idea实现tomcat服务器连接MySQL数据库实现前后端交互
  • 先说说这个题目吧,好端端的数据库不连,偏偏喜欢要整一个JavaBean和List来模拟数据库,虽然说这样的做法非常的愚蠢,但没办法,毕竟是主人的任务是吧doge。作者其实已经做了一版,但是这代码写的实在是。。。于是乎...
  • Web入门之VScode连接数据库sql server(超详细)

    万次阅读 多人点赞 2021-01-27 17:49:53
    Web入门之VScode连接数据库sql server(超详细) 今天我们终于开始连接数据库啦,作为一个登录页面,怎么能不连接我们已经建立好的school数据库呢,下面,我们一起来连接吧,非常简单哦。 打开数据库 第一步当然就是...
  • eclipse连接数据库并实现用户注册登录功能

    万次阅读 多人点赞 2020-12-06 19:40:58
    文章目录MySQL配置环境变量navicat部署tomcat导入驱动修改代码连接mysql数据库运行: MySQL配置环境变量 mysql肯定是必不可少的,这个就不用多说了,自己去官网下载就行我们来配置一下mysql的环境变量 步骤: 我的...
  • 从标题就能知道,我们需要实现的是前端页面通过ajax发送数据到后台,然后后台进行数据库查询并进行逻辑判断用户是否存在,如果存在则不能进行注册并返回数据,不存在进行注册并返回数据,最后返回验证数据给前端,...
  • 二、查询数据库中的login表,与form表单传来的账号密码进行对比,校验登录 一、jdbc连接8.0以上的mysql mysql在8.0以上的版本更新以后,对应的jdbc连接也有了新的变化。 首先,我们需要配置mysql的环境,推荐...
  • 下面一个小项目中的登录注册将会带大家从零开始学习怎么设计登录注册流程. 2.登录注册设计流程 3.注册的数据流程 那么我们的前端数据是怎么传向后端的? 1.首先这里我们是用 表单传递 通过form提交 2.在...
  • Web Of Science数据库免费检索入口,SCI论文期刊数据库免费入口Web of Science是世界权威的引文索引类数据库,包括Science Citation Index Expanded (简称SCI)、Social Sciences Citation Index(简称SSCI)和Arts &...
  • web实验报告.zip

    2021-12-27 15:11:33
    陆,注册,忘记密码,主页,信息页面等,所有的页面需要实现响应式布局,其中的链接, 按钮需要可以点击,形成一个完整的系统。 (1) 利用实验一设计的基民啊,购机哪一个基于SpringMVC+Spring的web系统 (2) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,222
精华内容 35,288
热门标签
关键字:

web注册登录链接数据库