java web登录action_JavaWeb中登陆功能

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

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

1

2 用户名:

3 密码:

4

5

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

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

1 public classUser {2 privateString userName;3 privateString password;4 publicString getUserName() {5 returnuserName;6 }7 public voidsetUserName(String userName) {8 this.userName =userName;9 }10 publicString getPassword() {11 returnpassword;12 }13 public voidsetPassword(String password) {14 this.password =password;15 }16 }

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

1 importjava.io.IOException;2

3 importjavax.servlet.ServletException;4 importjavax.servlet.http.HttpServlet;5 importjavax.servlet.http.HttpServletRequest;6 importjavax.servlet.http.HttpServletResponse;7

8 importcom.test.dao.UserDao;9 //创建时为Servlet而不是Class,需要在web.xml中进行配置,配置的代码Myeclipse将自动生成

10 public class LoginServlet extendsHttpServlet {11 //创建UserDao的对象,以便于查询数据库

12 UserDao userDao=newUserDao();13 //以下doGet方法和doPost方法分别对应form表单中的method="get"和method="post"

14 public voiddoGet(HttpServletRequest request, HttpServletResponse response)15 throwsServletException, IOException {16 }17 public voiddoPost(HttpServletRequest request, HttpServletResponse response)18 throwsServletException, IOException {19 //利用getParameter方法获取到前台文本框中输入的值,其中括号内的内容为标签中的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 packagecom.test.dao;2

3 importjava.sql.Connection;4 importjava.sql.DriverManager;5 importjava.sql.PreparedStatement;6 importjava.sql.ResultSet;7

8 public classUserDao {9 //连接数据库的代码

10 publicConnection 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 returnconn;26 }27 //进行查询的方法,若含有满足条件的数据则返回true

28 public booleangetSelect(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 returnflag;42 }43 }

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

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

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

1 <?xml version="1.0" encoding="UTF-8"?>

2

3

4 LoginServlet

5 com.test.servlet.LoginServlet

6

7

8

9 LoginServlet

10 /LoginServlet

11

12

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Download Manager用法大全

http://www.trinea.cn/android/android-downloadmanager/ http://www.trinea.cn/android/android-downloadmanager-pro/转载于:https://www.cnblogs.com/soaringEveryday/articles/4135204.html

Chrome浏览器无法观看视频,一直提示“adobe flash player 已过期” ?

很多新用户在安装了Chrome浏览器或者更新过的的时候&#xff0c;经常提示“ adobe flash player 已过期”的问题&#xff0c;反复提示&#xff0c;导致无法观看视频。于是从网上也找了很多办法都没有解决。这里给大家提供一个最完美的解决方案。经亲自测试&#xff0c;完美解决…

关于JVM的垃圾回收GC的一些记录

目录 一、JVM内存区域划分 二、从一个基本问题开始引入垃圾回收 三、GC作用的区域 三、如何确定一个对象是否可以被当成垃圾进行回收 &#xff08;1&#xff09;引用计数法 &#xff08;2&#xff09;可达性分析算法 &#xff08;3&#xff09;引用的类型 &#xff08;3…

同步与互斥

有数据交互的进程之间的关系主要有两种,同步与互斥.所谓互斥,是指在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行.所谓同步,是指在不同进程之间的若干程序片断,它们的…

java 分号 转义_java – 正则表达式和转义和未转义的分隔符

你可以使用正则表达式(?:\\.|[^;\\])*匹配未转义分号之间的所有文本&#xff1a;List matchList new ArrayList();try {Pattern regex Pattern.compile("(?:\\\\.|[^;\\\\])*");Matcher regexMatcher regex.matcher(subjectString);while (regexMatcher.find())…

OpenCV cv::Mat类

using namespace cv; 1、Mat的声明&#xff1a; Mat mMat(rows, cols, type); Mat mMat(Size(width,height), type); type指矩阵中元素的类型&#xff0c;可以使CV_8U&#xff08;无符号单字节像素&#xff09;&#xff0c;CV_8S&#xff08;有符号单字节像素&#xff09;&…

ubuntu-E:Encountered a section with no Package: header的解决办法

ubuntu 11.04 出现了如下错误&#xff1a; E:Encountered a section with no Package: header 终端中输入以下两条命令&#xff1a; sudo rm /var/lib/apt/lists/* -vfsudo apt-get update 执行完了命令之后&#xff0c;软件更新器应该会自动要求更新的&#xff0c;更新便是。 …

java new collection_使用Java 8新增的Predicate操作Collection集合

Java 8 起为 Collection 集合新增了一个 removeIf(Predicate filter) 方法&#xff0c;该方法将会批量删除符合 filter 条件的所有元素。该方法需要一个 Predicate 对象作为参数&#xff0c;Predicate 也是函数式接口&#xff0c;因此可使用 Lambda 表达式作为参数。如下程序示…

codevs1219 骑士遍历(棋盘DP)

题目描述 Description设有一个n*m的棋盘&#xff08;2≤n≤50&#xff0c;2≤m≤50&#xff09;&#xff0c;如下图&#xff0c;在棋盘上有一个中国象棋马。 规定&#xff1a; 1)马只能走日字 2)马只能向右跳 问给定起点x1,y1和终点x2,y2&#xff0c;求出马从x1,y1出发到x2,y2的…

php显示错误

error_reporting(E_ALL);ini_set(display_errors, 1);//将出错信息输出到一个文本文件ini_set(error_log, dirname(__FILE__) . /error_log.txt);

java ssh免密登录_SSH公钥、私钥配置(SSH免密码登录方式)

1.首先使用想要发起ssh免密访问的用户A登录Linux(简称客户端Linux)2.进入该用户的家目录(cd ~)&#xff0c;看是否有.ssh文件夹(linux中以.开头文件夹是隐藏的&#xff0c;使用ll -a进行查看)&#xff0c;如果没有则创建(mkdir ~/.ssh)&#xff0c;并修改访问权限(chmod 700 ~…

最近学到的一点东西

1 rpc 2 socket&#xff0c;工作很多年了&#xff0c;才明白这货的重要性&#xff0c;不过什么样的通信方式&#xff0c;最底层的连接得用它 3 sip协议 4调试&#xff0c;一定要确认异常出错位置&#xff0c;不能乱猜 5 某些诡异的问题&#xff0c;可以依靠在加一层解决&#x…

win8, VS2013 .NET 4.5在哪找svcutil.exe?

我这个纠结呀&#xff0c;公司用win8&#xff0c; .NET 4.5。想做一个很简单的项目&#xff0c;就是wcf宿主iis&#xff0c;项目根目录下有aspx文件和svc文件。于是参考了一个博客http://www.cnblogs.com/yjmyzz/archive/2008/08/19/1270961.html&#xff0c;[原创]WCF入门级使…

java tbase_使用Java从firebase获取数据

我在下面的代码中遇到了一个问题,该代码几乎逐字地从Firebase SDK Java文档中复制到了工作中.我是一个真正的语言的新手,比如来自PHP和JavaScript的webdev背景的Java.基本上,addListenerForSingleValueEvent没有触发以返回数据.我注意到了这一点,因为系统打印输出没有触发,因此…

错误内存【读书笔记】C程序中常见的内存操作有关的典型编程错误

题记&#xff1a;写这篇博客要主是加深自己对错误内存的认识和总结实现算法时的一些验经和训教&#xff0c;如果有错误请指出&#xff0c;万分感谢。 对C/C程序员来讲&#xff0c;内存管理是个不小的挑战&#xff0c;绝对值得慎之又慎&#xff0c;否则让由上万行代码构成的模块…

Spring_HelloWord

环境&#xff1a;IntelliJ 14 &#xff1b; jdk1.8 Spring操作步骤 1.新建项目---Spring Batch2.IntelliJ会自动加载jar包3.现在就可以在src目录下写Java类文件了4.将相应的类部署在XML配置文件spring-config.xml中 &#xff08;Eclipse需要手动创建&#xff0c;貌似名为bean.x…

java 按钮组_java中创建一个按钮组,有10个按钮,分别写着0,1,2,,3。。。。9

展开全部用Java创建按钮组32313133353236313431303231363533e59b9ee7ad9431333332643966的程序如下:import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;public class…

Starling 2D框架简介

本系列是对Introducing Starling pdf的翻译&#xff0c;下文是对adobe开发人员中心的一片日志的转载&#xff0c;地址为http://www.adobe.com/cn/devnet/flashplayer/articles/introducing_Starling.html Starling 是在 Stage3D APIs 基础上开发的一种 ActionScript 3 2D 框架&…

基本数据结构——栈

栈的特征是后进先出&#xff08;last-in, first-out, LIFO&#xff09;。栈上的插入操作称为压入&#xff08;PUSH&#xff09;&#xff0c;删除操作称为弹出&#xff08;POP&#xff09;。 下面使用一个数组S[n]来实现一个最多容纳n个元素的栈。定义一个属性指向最新插入的元素…

Android AutoCompleteTextView控件实现类似百度搜索提示,限制输入数字长度

Android AutoCompleteTextView 控件实现类似被搜索提示&#xff0c;效果如下 1.首先贴出布局代码 activity_main.xml&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res…