JSP+Servlet制作Java Web登录功能的全流程解析_JSP编程

0.新建web项目
首先,在MyEclipse里新建java web项目,项目名为login。此时,项目中包含一个src文件夹和一个WebRoot文件夹,以及Java Web自带的JRE库文件夹和J2EE库文件夹。其中,在WebRoot文件夹下,包含了WEB-INF文件夹和一个index.jsp页面文件。
接下来,新建一个JSP页面,命名为login.jsp。
项目文件的结构如下:

1.设计login.jsp页面
打开login.jsp页面后,修改第一行的代码为pageEncoding="utf-8",防止页面中文出现乱码。接下来在body部分定义form表单,用于用户输入用户名和密码。页面代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <base href="<%=basePath%>">
 <title>登陆页面</title>
 </head>

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

2.新建servlet文件
接下来,在MyEclipse中新建一个loginServlet.java,并定义在包文件夹a下(包名自己决定)。文件夹目录如下:

双击,打开loginServlet.java文件,在doPost方法内,通过request.getParameter()方法获取login页面的username和password,并通过response.sendRedirect()方法跳转到index.jsp页面。页面代码如下:

package a;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class loginServlet implements javax.servlet.Servlet{
 public void doPost(HttpServletRequest request,HttpServletResponse response)
 throws ServletException,IOException{
 String userName = request.getParameter("username");//取得用户名
 String password = request.getParameter("password");//取得密码
 response.sendRedirect("index.jsp");
 }

 public void destroy() {
 }

 public ServletConfig getServletConfig() {
  return null;
 }

 public String getServletInfo() {
  return null;
 }

 public void init(ServletConfig arg0) throws ServletException {
 }

 public void service(ServletRequest request, ServletResponse response)
   throws ServletException, IOException {
  HttpServletRequest rq = (HttpServletRequest)request;
  HttpServletResponse rs = (HttpServletResponse) response;
  doPost(rq,rs);

 }
}

3.配置servlet
打开WEB-INF文件夹下的web.xml文件,通过设置这个网站的首页为login.jsp。接下来配置servlet。页面代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>a.loginServlet</servlet-class>
</servlet>
 <servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
 <welcome-file-list>
 <welcome-file>login.jsp</welcome-file>
 </welcome-file-list>
</web-app>

 
4.测试页面
最后看看运行效果,选择运行,选择某个版本的tomcat启动。页面效果如下:

5.配置数据源
(1)创建数据库
打开mysql数据库,新建数据库,此处命名为login数据库,在数据库中创建表login,并且设置username和password字段。数据库的设计表如下:

上图中的id作为主键,使得数据库的表至少符合第二范式的要求,其中username和password字段是login表内独有的字段,因此此表符合第三范式的要求。
接下来在login表中填入数据,此例的数据如下:

(2)连接数据库
在MyEclipse中连接数据库,此处采用加载JDBC驱动的方法连接数据库。首先下载mysql的驱动,接下来需要导入mysql的jar包到我们的项目中来,在包资源管理器中右键JRE系统库,选择构造路径-配置构建路径选项卡,弹出的Java构建路径选项卡中,通过添加外部JAR(X)按钮加载mysql.jar文件。
  接下来,在项目中新建DBUtil.java文件,用于连接mysql数据库。此处略去连接数据库的原理,DBUtil.java文件的源代码如下,请更改源代码中的数据库名称和连入mysql的用户名密码等信息:

package a;
import java.sql.*;

public class DBUtil {
 boolean bInited = false;
 //加载驱动
 public void initJDBC() throws ClassNotFoundException {
 //加载MYSQL JDBC驱动程序
 Class.forName("com.mysql.jdbc.Driver");
 bInited = true;
 System.out.println("Success loading Mysql Driver!");
 }

 public Connection getConnection() throws ClassNotFoundException,
 SQLException{
 if(!bInited){
 initJDBC();
 }
 //连接URL为 jdbc:mysql//服务器地址/数据库名
 //后面的2个参数分别是登陆用户名和密码
 Connection conn = DriverManager.getConnection(
 "jdbc:mysql://localhost:3306/数据库名","用户名","密码");
 return conn;
 }

 public boolean loginSuccess(String userName,String password){
 boolean returnValue = false;
 String sql = "SELECT * FROM login";
 Connection conn = null;
 Statement stmt = null;
 ResultSet rs = null;

 try{
 conn = getConnection();
 stmt = conn.createStatement();
 rs = stmt.executeQuery(sql);
 while(rs.next()){
 String userNameInDB = rs.getString("username");
 String passwordInDB = rs.getString("password");
 if(userNameInDB.equals(userName) &&
 passwordInDB.equals(password)){
 returnValue = true;
 break;
 }
 }
 }catch (ClassNotFoundException e) {
 e.printStackTrace();
 }catch (SQLException e) {
 e.printStackTrace();
 }

 return returnValue;

 }
}

  上文中loginSuccess()方法内,用于在数据库中查找用户名和密码与传入参数username、password匹配的情况。一旦找到,则返回true结果。

(3)修改Servlet业务逻辑
修改loginServlet.java文件的业务逻辑,在其中加入连接数据库的语句。其中,主要的页面跳转逻辑写着了doPost()方法内,修改后的doPost()方法如下:

public void doPost(HttpServletRequest request,HttpServletResponse response)
 throws ServletException,IOException{
 String userName = request.getParameter("username");//取得用户名
 String password = request.getParameter("password");//取得密码
 DBUtil db = new DBUtil();//构建数据库对象
 boolean canLogin = db.loginSuccess(userName, password);
 if(canLogin){//根据登陆情况,跳转页面
 response.sendRedirect("index.jsp");
 }else{
 response.sendRedirect("login.jsp");
 }
 }

(4)测试页面
调试后的页面效果如下:

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, jsp
, servlet
, web
登录
jsp servlet工作流程、java servlet编程 pdf、java servlet编程、servlet编程、servlet编程实例,以便于您获取更多的相关知识。

时间: 2024-11-01 15:36:24

JSP+Servlet制作Java Web登录功能的全流程解析_JSP编程的相关文章

JSP学习之Java Web中的安全控制实例详解_JSP编程

本文实例讲述了JSP学习之Java Web中的安全控制.分享给大家供大家参考.具体如下: 一.目标: ① 掌握登录之后的一般处理过程: ② 能够为每个页面添加安全控制: ③ 能够共享验证代码: ④ 使用过滤器对权限进行验证: ⑤ 能够对文件的局部内容进行验证: ⑥ 掌握安全验证码的基本实现方式: ⑦ 通过异常处理增强安全性. 二.主要内容: ① 通过修改前面的登录功能,分别对管理员和普通用户的登录进行处理: ② 为管理员才能访问的页面添加控制: ③ 共享各个页面中的控制代码,使用专门的文件,然后

Java Web实现的基本MVC实例分析_JSP编程

本文实例讲述了Java Web实现的基本MVC.分享给大家供大家参考.具体如下: login.jsp--视图部分的输入文件 success.jsp--视图部分的输出文件 failure.jsp--视图部分的输出文件 LoginBean.java--模型部分 LoginServlet.java--控制器部分 web.xml--web应用的配置文件 下面分别介绍: 1.login.jsp 该功能的输入文件,用户首先访问这个文件.主要用于输入用户名和口令. 代码如下: <%@ page content

Java Web开发之访问路径问题分析_JSP编程

本文实例讲述了Java Web开发之访问路径问题.分享给大家供大家参考.具体如下: Web应用是由大量的文件组成的,系统等运行主要是靠文件之间的相互调用来完成,调用就是根据文件的位置来确定的.如果你在访问某个文件的时候,系统报下面这样的错误,如果你的文件名没有写错,就是路径出错了. 为了说明路径问题,我们假设有以下的文档结构: 这是JBuilder2006下的一个截图,应用的名字是filepathweb,有两个文件夹,aa和bb,其中aa下有a_a.jsp和a_b.jsp两个文件,bb下有b_a

Java Web开发之MD5加密用法分析_JSP编程

本文实例讲述了Java Web开发之MD5加密用法.分享给大家供大家参考.具体如下: MD5是Message Digest 5的缩写,是一种加密算法,能够对字节数组进行加密,有如下特点: ① 不能根据加密后的信息找加密之前的信息: ② 加密后的结果是128位: ③ 对于给定的字节数组,不管什么时候采用这种加密算法,结果是相同的: ④ 对于不同的字节数组,加密的结果是不相同的. 在Web应用中通常需要对用户设置的密码进行加密之后再存储,否则数据库管理员能够看到明文的密码,并且密码也有被黑客获取的危

Java Web开发之信息查询方式总结_JSP编程

本文实例讲述了Java Web开发之信息查询方式总结.分享给大家供大家参考.具体如下: 这里介绍的查询方式有: ① 根据某个特定的字段查询: ② 在多个字段中查询: ③ 根据任意字段查询: ④ 任意字段组合查询: ⑤ 多值查询. 根据某个特定的字段进行查询 用户在输入界面中输入要查询的字段的值,然后系统根据这个值进行查找. 下面的实例是根据用户名查询用户的详细信息,简单的效果图如下: 关键代码如下: <p>请输入要查询的姓名:</p> <form action="s

JSP上传图片产生 java.io.IOException: Stream closed异常解决方法_JSP编程

在做 jsp 上传图片时,把 java 代码直接改成 jsp,上传时产生 如下异常: 2012-12-31 8:59:21 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet jsp threw exception java.io.IOException: Stream closed ... 百思不得其解,翻出 jsp 转成 servlet 后的代码.如下(很很的醒目一下):

用jsp+servlet制作动态网页

问题描述 用jsp+servlet制作动态网页 有哪位大神有做过Discuz论坛吗用jsp................................... 解决方案 Discuz论坛用的是php 不过你可以google下找到很多jsp的论坛代码. 解决方案二: JSP , Servlet 和动态网页. 1. 使用Servlet 可以产生动态网页,但是需要在代码中打印输出很多HTML的标签. ??? ->即,将静态显示的内容和动态产生的内容全部放到代码中. 2. 在静态的网页文件中嵌入脚本代

jsp连接mysql数据库实现登录功能求代码及讲解

问题描述 jsp连接mysql数据库实现登录功能求代码及讲解 jsp连接mysql数据库实现登录功能求代码及讲解,新手小白求指导 解决方案 参考JSP连接mysql,实现登录界面代码和注释简单明了,一看就明白了 解决方案二: 代码呢 代码都没杂讲解 解决方案三: 楼上说的是JSP小脚本程序实现 可是一般的开发中是不会出现这种情况的 解决方案四: http://www.cnblogs.com/cysolo/archive/2013/05/06/3063738.html 此类问题,你需要先问goog

jsp基于XML实现用户登录与注册的实例解析(附源码)_JSP编程

简单的基于xml做数据库的登录与注册 主题介绍:1.xml的读取和存储,主要是用到dom4j技术,(网络中的文件存储路径采用classLoader) 文件的读取和存储,写了一个工厂类 public class DocumentFactory { private static Document dom=null;//需要共享一个dom,所以需要设置为static private static String name="user.xml"; private static String fi