本文实例为大家分享了JavaWeb登陆功能的方法,供大家参考,具体内容如下
首先我们要JavaWeb登陆的基本流程:JSP页面发送请求——>Servlet——>Servlet通过调用方法从数据库中得到数据并将结果返回页面。
我们先建立三个jsp页面,包括login.jsp(登陆页面)、index.jsp(显示登陆成功后的信息)、error.jsp(登录失败的页面),其中后两个页面的内容可以随意写,而login.jsp页面的主要内容如下:
1
2
3
4
5
|
<
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方法,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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来进行处理:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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行进行了调用,下面我们完成调用的方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
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为数据库名称
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中的配置:
1
2
3
4
5
6
7
8
9
10
11
12
|
<?
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开发的基本流程,当然我们在实际开发的过程中会进行更为精细的分割,包括接口,实现类等。