猿教程 Logo

使用JSP开发登录和登出功能

在这个创建登录表单的例子中,我们使用了DAO(数据访问对象),工厂方法和DTO(数据传输对象)设计模式。 有很多文件:

index.jsp它提供了用于登录,注销和配置文件

login.jsp用于从用户获取值

loginprocess.jsp(一个处理请求并调用方法的jsp文件)获取值。 

LoginBean.java,一个具有属性和setter和getter方法的bean类。 

Provider.java,一个包含许多常量的接口,如DRIVER_CLASS,CONNECTION_URL,USERNAME和PASSWORD 

ConnectionProvider.java,一个负责返回Connection对象的类。 它使用Singleton和工厂方法设计模式。 

LoginDao.java,一个用于从数据库验证emailId和密码的DAO类。 

logout.jsp它使会话无效。 

profile.jsp如果用户登录,它提供简单的消息,否则将请求转发到login.jsp页面。

在此示例中,我们使用Oracle10g数据库将emailId和密码与数据库相匹配。 表名称为user432,其中有许多字段,例如名称,电子邮件,传递等。您可以使用此查询来创建表:

CREATE TABLE  "USER432" 
   (	"NAME" VARCHAR2(4000), 
	"EMAIL" VARCHAR2(4000), 
	"PASS" VARCHAR2(4000)
   )
/

我们假设这个表中有很多记录。

index.jsp

它只提供了三个链接登录,注销和配置文件。

<a href="login.jsp">login</a>|
<a href="logout.jsp">logout</a>|
<a href="profile.jsp">profile</a>

login.jsp

此文件为两个输入字段:名称和密码创建一个登录表单。 这是简单的登录表单,你可以更改它的更好的外观和感觉。 我们只关注这个概念。

<%@ include file="index.jsp" %>
<hr/>

<h3>Login Form</h3>
<%
String profile_msg=(String)request.getAttribute("profile_msg");
if(profile_msg!=null){
out.print(profile_msg);
}
String login_msg=(String)request.getAttribute("login_msg");
if(login_msg!=null){
out.print(login_msg);
}
 %>
 <br/>
<form action="loginprocess.jsp" method="post">
Email:<input type="text" name="email"/><br/><br/>
Password:<input type="password" name="password"/><br/><br/>
<input type="submit" value="login"/>"
</form>

loginprocess.jsp

这个jsp文件包含bean类的对象的所有传入值,它作为LoginDao类的validate方法中的参数传递。 如果emailid和密码正确,它会显示您已成功登录的消息! 并维护会话,以便我们可以识别用户。

<%@page import="bean.LoginDao"%>
<jsp:useBean id="obj" class="bean.LoginBean"/>

<jsp:setProperty property="*" name="obj"/>

<%
boolean status=LoginDao.validate(obj);
if(status){
out.println("You r successfully logged in");
session.setAttribute("session","TRUE");
}
else
{
out.print("Sorry, email or password error");
%>
<jsp:include page="index.jsp"></jsp:include>
<%
}
%>

LoginBean.java

它是有两个属性电子邮件和传递与它的setter和getter方法的bean类。

package bean;

public class LoginBean {
private String email,pass;

public String getEmail() {
	return email;
}

public void setEmail(String email) {
	this.email = email;
}

public String getPass() {
	return pass;
}

public void setPass(String pass) {
	this.pass = pass;
}


}

Provider.java

此接口包含四个常量,可能因数据库而异。

package bean;

public interface Provider {
String DRIVER="oracle.jdbc.driver.OracleDriver";
String CONNECTION_URL="jdbc:oracle:thin:@localhost:1521:xe";
String USERNAME="system";
String PASSWORD="oracle";

}

ConnectionProvider.java

这个类提供了一个返回Connection对象的工厂方法。 这里,驱动程序类只加载一次,连接对象只获得一次内存,因为它是静态的。

package bean;
import java.sql.*;
import static bean.Provider.*;

public class ConnectionProvider {
private static Connection con=null;
static{
try{
Class.forName(DRIVER);
con=DriverManager.getConnection(CONNECTION_URL,USERNAME,PASSWORD);
}catch(Exception e){}
}

public static Connection getCon(){
	return con;
}

}

LoginDao.java

此类验证电子邮件ID和密码。


package bean;
import java.sql.*;
public class LoginDao {

public static boolean validate(LoginBean bean){
boolean status=false;
try{
Connection con=ConnectionProvider.getCon();
			
PreparedStatement ps=con.prepareStatement(
	"select * from user432 where email=? and pass=?");

ps.setString(1,bean.getEmail());
ps.setString(2, bean.getPass());
			
ResultSet rs=ps.executeQuery();
status=rs.next();
			
}catch(Exception e){}

return status;

}
}


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Jsp/login-form-in-jsp.html