急急!!!!表单登录(高手请入)
我用java servlet做了一个表单登陆,通过doGet的Form表单action='loginservlet' 进入loginservlet的doPost事件,在doPost通过与数据库的连接判断是否输入的用户帐号和密码正确,如正确进入mainservlet,这样做由于有 out.println("window.opener = null;");
out.println("window.close('loginservlet')");
out.println("window.open('mainservlet','','fullscreen=yes')");
这三句代码,显得很不连贯,现在我想直接在doGet的Form的action改成action='mainservlet' method='post'通过与数据连接判断进入mainservlet,而不通过loginservlet的doPost事件,请问怎么做呢, 同时我的数据库采用的是JDBC-ODBC桥连接,很慢,能不能帮我用别的连接方式改进呢,谢谢?
代码如下:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
public class LoginServlet extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK";
//Initialize global variables
public void init() throws ServletException {
}
public static String toChinese(String strvalue)
{
try{
if(strvalue==null)
return null;
else
{
strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK");
return strvalue;
}
}catch(Exception e){
return null;
}
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session=request.getSession(true);
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title></title>");
out.println("<META http-equiv=Content-Type content='text/html; charset=gb2312'>");
out.println("</head>");
out.println("<BODY text=black bgColor=white leftMargin=1 MARGINWIDTH='1'><br>");
out.println("<CENTER><IMG alt='' src='file:///E:/wl/images/ball.jpg' width='584' border=0 height='226'> ");
out.println("<FORM name='frmlogin' action='loginservlet' onsubmit='return whensubmit()' method='post'>");
out.println("<p>账号<input maxLength='10' size='8' name='yhm'> 密码<input type='password' maxLength='6' size='8' value name='mm'><input type='submit' onclick='javascript:select()' value='登录'><INPUT type=hidden name=t></TD>");
out.println("<script languange='JavaScript' type='text/javascript'>");
out.println("<!--");
out.println("function whensubmit(){");
out.println("if(document.frmlogin.yhm.value==''){");
out.println("window.alert('请输入用户帐号');");
out.println("document.frmlogin.yhm.focus()");
out.println("return false;");
out.println("}");
out.println("if(document.frmlogin.mm.value==''){");
out.println("window.alert('请输入用户密码');");
out.println("document.frmlogin.mm.focus()");
out.println("return false;");
out.println("}");
out.println("}");
out.println("//-->");
out.println("</SCRIPT>");
out.println("</form>");
out.println("</center>");
out.println("</body>");
out.println("</html>");
}
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session=request.getSession(true);
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
String username = "system";
String password = "manager";
String conName = "jdbc:odbc:test";
String yhm = request.getParameter("yhm").trim();
yhm=toChinese(yhm);
String mm = request.getParameter("mm").trim();
Connection sqlCon;
ResultSet rstSql;
Statement stmS;
String strCon;
String strSql;
ResultSetMetaData rsmd;
String sql = "select * from wl.yhxx where yhm = '"+yhm+"' and mm='"+mm+"' and yhzt='1'";
if(!yhm.equals("")){
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
sqlCon = java.sql.DriverManager.getConnection(conName, username,
password);
stmS = sqlCon.createStatement();
rstSql = stmS.executeQuery(sql);
rsmd = rstSql.getMetaData();
out.println("</body></html>");
long rowcount = 0;
while (rstSql.next()) {
rowcount++;
}
if (rowcount > 0) {
session.setAttribute("login", yhm);
out.println("<SCRIPT LANGUAGE=JavaScript TYPE='text/javascript'>");
out.println("<!--");
out.println("{");
out.println("window.opener = null;");
out.println("window.close('loginservlet')");
out.println("window.open('mainservlet','','fullscreen=yes')");
out.println("}");
out.println("-->");
out.println("</SCRIPT>");
}
else {
out.println("<SCRIPT LANGUAGE=JavaScript TYPE='text/javascript'>");
out.println("<!--");
out.println("{");
out.println("window.alert('口令不对,请再次输入')");
out.println("}");
out.println("-->");
out.println("</SCRIPT>");
}
if (sqlCon != null)
sqlCon.close();
if (rstSql != null)
rstSql.close();
if (stmS != null)
stmS.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
doGet(request, response);
}
}