欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaWeb登陆功能实现代码

程序员文章站 2024-03-12 19:36:56
本文实例为大家分享了javaweb登陆功能的方法,供大家参考,具体内容如下 首先我们要javaweb登陆的基本流程:jsp页面发送请求——>servlet——>...

本文实例为大家分享了javaweb登陆功能的方法,供大家参考,具体内容如下

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

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

<form action="loginservlet" method="post">
   用户名:<input type="text" name="username"/>
   密码:<input type="password" name="password"/>
   <input type="submit" value="提交"/>
  </form>

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

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

public class user {
 private string username;
 private string password;
 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;
 }
}

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

import java.io.ioexception;

import javax.servlet.servletexception;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;

import com.test.dao.userdao;
//创建时为servlet而不是class,需要在web.xml中进行配置,配置的代码myeclipse将自动生成
public class loginservlet extends httpservlet {
 //创建userdao的对象,以便于查询数据库
 userdao userdao=new userdao();
 //以下doget方法和dopost方法分别对应form表单中的method="get"和method="post"
 public void doget(httpservletrequest request, httpservletresponse response)
   throws servletexception, ioexception {
 }
 public void dopost(httpservletrequest request, httpservletresponse response)
   throws servletexception, ioexception {
  //利用getparameter方法获取到前台文本框中输入的值,其中括号内的内容为<input/>标签中的name属性
  string username=request.getparameter("username");
  string password=request.getparameter("password");
  //调用userdao中的getselect方法并获取到返回值
  boolean flag=userdao.getselect(username, password);
  //若用户名和密码存在则转发到index.jsp页面,否则重定向到error.jsp页面
  if (flag) {
   request.getrequestdispatcher("index.jsp").forward(request, response);
  }
  else
   response.sendredirect("error.jsp");
 }

}

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

package com.test.dao;

import java.sql.connection;
import java.sql.drivermanager;
import java.sql.preparedstatement;
import java.sql.resultset;

public class userdao {
 //连接数据库的代码
 public connection getcon() {
  //数据库连接名称
  string username="root";
  //数据库连接密码
  string password="";
  string driver="com.mysql.jdbc.driver";
  //其中test为数据库名称
  string url="jdbc:mysql://localhost:3306/test";
  connection conn=null;
  try{
   class.forname(driver);
   conn=(connection) drivermanager.getconnection(url,username,password);
  }catch(exception e){
   e.printstacktrace();
  }
  return conn;
 }
 //进行查询的方法,若含有满足条件的数据则返回true
 public boolean getselect(string username,string password) { 
  boolean flag=false;
   string sql = "select * from user where username='"+username+"' and password='"+password+"'"; 
   connection conn = getcon();
   preparedstatement pst = null;
   try {
    pst = (preparedstatement) conn.preparestatement(sql);
    resultset rs = pst.executequery();
    if (rs.next()) {
     flag=true;
    }
   } catch (exception e) {
   }
   return flag;
  }
}

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

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

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

<?xml version="1.0" encoding="utf-8"?>
<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">
 <servlet>
 <servlet-name>loginservlet</servlet-name>
 <servlet-class>com.test.servlet.loginservlet</servlet-class>
 </servlet>

 <servlet-mapping>
 <servlet-name>loginservlet</servlet-name>
 <url-pattern>/loginservlet</url-pattern>
 </servlet-mapping>
</web-app>

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

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

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

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