📄 loginservlet.java
字号:
package login;
import java.io.*;
import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LoginServlet extends HttpServlet {
protected String site;
protected String domain, restricted;
protected SessionCache sessionCache;
protected long flushTimeout=600000;
protected long sessionTimeout=7200000;
protected boolean protectedDir=false;
protected String defaultPage="/index.html";
weblogic.servlet.FileServlet fileServlet;
static {
try{
new pool.JDCConnectionDriver("postgresql.Driver",
"jdbc:postgresql:ejbdemo","postgres", "pass");
}catch(Exception e){
System.out.println("new pool error"+e);
}
}
public Connection getConnection() throws SQLException {
return DriverManager.getConnection("jdbc:jdc:jdcpool");
}
public void init(ServletConfig config) throws ServletException {
super.init(config);
domain = config.getInitParameter("domain");
restricted = config.getInitParameter("restricted");
if(restricted != null) {
protectedDir=true;
}
sessionCache = new SessionCache (flushTimeout);
if ((fileServlet=(weblogic.servlet.FileServlet)config.
getServletContext().getServlet("file")) == null ) {
throw new ServletException ("No FileServlet found installed ");
}
}
public void service(HttpServletRequest request,
HttpServletResponse response) throws IOException {
Cookie thisCookie=null;
boolean activeSession;
String cmd;
Session session = validateSession (request, response);
if ((cmd=request.getParameter ("action")) != null ) {
setNoCache (request, response);
if (cmd.equals ("login") && session == null ) {
// create a new session
session = startSession (request.getParameter("theuser"),
request.getParameter ("password"), response);
if(protectedDir) {
response.sendRedirect (restricted+"/index.html");
} else {
response.sendRedirect (defaultPage);
}
} else if (cmd.equals ("displayDetails")) {
if(session != null) {
response.setContentType("text/html");
ServletOutputStream out = response.getOutputStream();
out.println("User id is "+session.getUser());
out.flush();
} else {
response.sendRedirect ("/login.html");
}
} else if (cmd.equals ("logout")) {
if (session != null ) {
endSession (session);
}
response.sendRedirect (defaultPage);
} else {
response.sendRedirect (defaultPage);
}
} else {
if (session != null) {
// already logged in
if ( response.containsHeader ("Expires") == false ) {
response.setDateHeader ("Expires", session.getExpires());
}
try {
fileServlet.doGet (request, response);
}catch (Exception e) {
response.sendRedirect ("/login.html");
}
} else {
// no existing session
if( protectedDir &&
request.getRequestURI().indexOf(restricted)>=0) {
// restricted directory. Dont go in there!
response.sendRedirect ("/login.html");
} else {
// this file looks ok to serve dispense
try {
fileServlet.doGet (request, response);
}catch (Exception e) {
response.sendRedirect ("/login.html");
System.out.println("error"+e);
}
}
}
}
}
protected boolean verifyPassword(String theuser, String password) {
String originalPassword=null;
try {
Connection con=getConnection();
Statement stmt= con.createStatement();
stmt.executeQuery("select password from registration
where theuser='"+theuser+"'");
ResultSet rs = stmt.getResultSet();
if(rs.next()) {
originalPassword=rs.getString(1);
}
stmt.close();
if(originalPassword.equals(password)) {
return true;
} else {
return false;
}
} catch (Exception e){
System.out.println("Exception: verifyPassword="+e);
return false;
}
}
protected Session startSession (String theuser, String password,
HttpServletResponse response) {
Session session = null;
if ( verifyPassword(theuser, password) ) {
// Create a session
session = new Session (theuser);
session.setExpires (sessionTimeout+System.currentTimeMillis());
sessionCache.put (session);
// Create a client cookie
Cookie c = new Cookie("JDCAUCTION", String.valueOf (session.getId()));
c.setPath ("/");
c.setMaxAge (-1);
c.setDomain (domain);
response.addCookie (c);
}
return session;
}
private Session validateSession (HttpServletRequest request,
HttpServletResponse response) {
Cookie c[] = request.getCookies();
Session session = null;
if ( c != null ) {
for (int i=0; i < c.length && session == null; i++ ) {
if(c[i].getName().equals("JDCAUCTION")) {
String key = String.valueOf (c[i].getValue());
session=sessionCache.get (key);
}
}
}
return session;
}
protected void endSession (Session session) {
synchronized (sessionCache) {
sessionCache.remove (session);
}
}
private void setNoCache (HttpServletRequest request,
HttpServletResponse response) {
if(request.getProtocol().compareTo ("HTTP/1.0") == 0) {
response.setHeader ("Pragma", "no-cache");
} else if (request.getProtocol().compareTo ("HTTP/1.1") == 0) {
response.setHeader ("Cache-Control", "no-cache");
}
response.setDateHeader ("Expires", 0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -