JavaWeb登陆功能实现代码

所属分类: 软件编程 / java 阅读数: 41
收藏 0 赞 0 分享

本文实例为大家分享了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开发的基本流程,当然我们在实际开发的过程中会进行更为精细的分割,包括接口,实现类等。

更多精彩内容其他人还在看

Java的面向对象编程基本概念学习笔记整理

这篇文章主要介绍了Java的面向对象编程基本概念学习笔记整理,包括类与方法以及多态等支持面向对象语言中的重要特点,需要的朋友可以参考下
收藏 0 赞 0 分享

Eclipse下编写java程序突然不会自动生成R.java文件和包的解决办法

这篇文章主要介绍了Eclipse下编写java程序突然不会自动生成R.java文件和包的解决办法 的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

基于Java实现杨辉三角 LeetCode Pascal's Triangle

这篇文章主要介绍了基于Java实现杨辉三角 LeetCode Pascal's Triangle的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Java中Spring获取bean方法小结

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,如何在程序中获取Spring配置的bean呢?下面通过本文给大家介绍Java中Spring获取bean方法小结,对spring获取bean方法相关知识感兴趣的朋友一起学习吧
收藏 0 赞 0 分享

如何计算Java对象占用了多少空间?

在Java中没有sizeof运算符,所以没办法知道一个对象到底占用了多大的空间,但是在分配对象的时候会有一些基本的规则,我们根据这些规则大致能判断出来对象大小,需要的朋友可以参考下
收藏 0 赞 0 分享

剖析Java中的事件处理与异常处理机制

这篇文章主要介绍了Java中的事件处理与异常处理机制,讲解Java是如何对事件或者异常作出响应以及定义异常的一些方法,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Java的Struts2框架的结构及其数据转移方式

这篇文章主要介绍了详解Java的Struts2框架的结构及其数据转移方式,Struts框架是Java的SSH三大web开发框架之一,需要的朋友可以参考下
收藏 0 赞 0 分享

Java封装好的mail包发送电子邮件的类

本文给大家分享了2个java封装好的mail包发送电子邮件的类,并附上使用方法,小伙伴们可以根据自己的需求自由选择。
收藏 0 赞 0 分享

在Java的Struts中判断是否调用AJAX及用拦截器对其优化

这篇文章主要介绍了在Java的Struts中判断是否调用AJAX及用拦截器对其优化的方法,Struts框架是Java的SSH三大web开发框架之一,需要的朋友可以参考下
收藏 0 赞 0 分享

java多线程Future和Callable类示例分享

JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。今天我们就来研究下Future和Callab
收藏 0 赞 0 分享
查看更多