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)测试页面
调试后的页面效果如下:
【说明】:
本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!