• JavaWeb中登陆功能


    首先我们要JavaWeb登陆的基本流程:JSP页面发送请求——>Servlet——>Servlet通过调用方法从数据库中得到数据并将结果返回页面

    我们先建立三个jsp页面,包括login.jsp(登陆页面)、index.jsp(显示登陆成功后的信息)、error.jsp(登录失败的页面),其中后两个页面的内容可以随意写,而login.jsp页面的主要内容如下:

    1  <form action="LoginServlet" method="post">
    2         用户名:<input type="text" name="userName"/>
    3         密码:<input type="password" name="password"/>
    4         <input type="submit" value="提交"/>
    5     </form>

    在login.jsp文件的开头我们需要将pageEncoding="ISO-8859-1"改为pageEncoding="utf-8"(同时不要忘记设置开发工具的编码格式,不然jsp页面会显示乱码)

    根据用户名和密码两个属性我们建立相应的实体类,并添加get和set方法,代码如下:

     1 public class User {
     2     private String userName;
     3     private String password;
     4     public String getUserName() {
     5         return userName;
     6     }
     7     public void setUserName(String userName) {
     8         this.userName = userName;
     9     }
    10     public String getPassword() {
    11         return password;
    12     }
    13     public void setPassword(String password) {
    14         this.password = password;
    15     }
    16 }

    而jsp页面中的action=“LoginServlet”是指将请求发送到Servlet处理。接下来我们转到Servlet来进行处理:

     1 import java.io.IOException;
     2 
     3 import javax.servlet.ServletException;
     4 import javax.servlet.http.HttpServlet;
     5 import javax.servlet.http.HttpServletRequest;
     6 import javax.servlet.http.HttpServletResponse;
     7 
     8 import com.test.dao.UserDao;
     9 //创建时为Servlet而不是Class,需要在web.xml中进行配置,配置的代码Myeclipse将自动生成
    10 public class LoginServlet extends HttpServlet {
    11     //创建UserDao的对象,以便于查询数据库
    12     UserDao userDao=new UserDao();
    13     //以下doGet方法和doPost方法分别对应form表单中的method="get"和method="post"
    14     public void doGet(HttpServletRequest request, HttpServletResponse response)
    15             throws ServletException, IOException {
    16     }
    17     public void doPost(HttpServletRequest request, HttpServletResponse response)
    18             throws ServletException, IOException {
    19         //利用getParameter方法获取到前台文本框中输入的值,其中括号内的内容为<input/>标签中的name属性
    20         String userName=request.getParameter("userName");
    21         String password=request.getParameter("password");
    22         //调用UserDao中的getSelect方法并获取到返回值
    23         boolean flag=userDao.getSelect(userName, password);
    24         //若用户名和密码存在则转发到index.jsp页面,否则重定向到error.jsp页面
    25         if (flag) {
    26             request.getRequestDispatcher("index.jsp").forward(request, response);
    27         }
    28         else
    29             response.sendRedirect("error.jsp");
    30     }
    31 
    32 }

    注释 中已经说的很明白了,就不再重复了,可以看看第26行和29行,其中26行是转发,29行是重定向,感兴趣的小伙伴可以查查两者的区别。剩下的一部分就是我们之前提到过的关于数据库的查询操作了,我们在23行进行了调用,下面我们完成调用的方法:

     1 package com.test.dao;
     2 
     3 import java.sql.Connection;
     4 import java.sql.DriverManager;
     5 import java.sql.PreparedStatement;
     6 import java.sql.ResultSet;
     7 
     8 public class UserDao {
     9     //连接数据库的代码
    10     public Connection getCon() {
    11         //数据库连接名称
    12         String username="root";
    13         //数据库连接密码
    14         String password="";
    15         String driver="com.mysql.jdbc.Driver";
    16         //其中test为数据库名称
    17         String url="jdbc:mysql://localhost:3306/test";
    18         Connection conn=null;
    19         try{
    20             Class.forName(driver);
    21             conn=(Connection) DriverManager.getConnection(url,username,password);
    22         }catch(Exception e){
    23             e.printStackTrace();
    24         }
    25         return conn;
    26     }
    27     //进行查询的方法,若含有满足条件的数据则返回true
    28     public boolean getSelect(String userName,String password) { 
    29         boolean flag=false;
    30             String sql = "select * from user where userName='"+userName+"' and password='"+password+"'"; 
    31             Connection conn = getCon();
    32             PreparedStatement pst = null;
    33             try {
    34                 pst = (PreparedStatement) conn.prepareStatement(sql);
    35                 ResultSet rs = pst.executeQuery();
    36                 if (rs.next()) {
    37                     flag=true;
    38                 }
    39             } catch (Exception e) {
    40             }
    41             return flag;
    42         }
    43 }

    在这个方法中我们首先连接数据库,然后在查询的方法中传入从jsp页面获取到的userName和password,判断数据库中是否存在此用户名和密码的用户,如果存在则返回true,否则返回false(不要忘记导入数据库链接的包)。

    至于数据库中的字段则参照实体类User建立即可,即包含userName和password两个属性,如果数据库链接还有问题的请参照之前的关于数据库部分的随笔。

    最后看一下web.xml中的配置:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
     3   <servlet>
     4     <servlet-name>LoginServlet</servlet-name>
     5     <servlet-class>com.test.servlet.LoginServlet</servlet-class>
     6   </servlet>
     7 
     8   <servlet-mapping>
     9     <servlet-name>LoginServlet</servlet-name>
    10     <url-pattern>/LoginServlet</url-pattern>
    11   </servlet-mapping>
    12 </web-app>

    其中<servlet>中的<servlet-name>可以随意写,只需要保证上下两部分相同即可。

    然后是<servlet-class>是自己定义的Servlet的路径(包含包名),最后是<url-pattern>,里面的内容也可以随意写,但是jsp页面中form表单的action属性必须与此名称相同(action中不包含"/")

    最后我们需要将web项目发布到tomcat中然后在浏览器输入:http://localhost:8080/项目名称/login.jsp就可以进行访问并登陆了。

    这只是一个简单的应用,目的是为了帮助各位小伙伴了解jsp+servlet开发的基本流程,当然我们在实际开发的过程中会进行更为精细的分割,包括接口,实现类等。

    希望大家好好学习,天天向上!!(Study hard and make progress every day!!)

  • 相关阅读:
    Photoshop基础照片美化
    通过浏览器学习前端的小技巧
    2018Github用户kamranahmedse分享的开发路线
    20个正则表达式,让你少写1,000行代码
    适合程序员学习的网站
    使用雪碧图Css Sprite精灵 | 加速网页响应速度
    HTTP 协议入门
    SVG动画制作工具 , 从此抛弃臃肿的gif
    MySQL 不用 Null 的理由
    2018年2月设计圈超实用干货大合集
  • 原文地址:https://www.cnblogs.com/xwlych/p/5993104.html
Copyright © 2020-2023  润新知