import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Login extends HttpServlet {
// 客户端用get方式访问页面时就是调用了doGet方法(直接在地址栏里面敲url地址)!
// 客户提交表单,并且表单用post方式提交时,调用了doPost方式!
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("gbk");
System.out.println("dopost!");
String pwd = req.getParameter("pwd");
String userName = req.getParameter("userName");
String check = req.getParameter("check");
PrintWriter pw = resp.getWriter();
pw.print("密码:" + pwd + "用户名:" + userName);
HttpSession hs = req.getSession(true);
hs.setAttribute("userName", userName);
hs.setAttribute("pwd", pwd);
// login用户名:"+userName+"密码"+password+"用户名:"+userName2);
String dbURL = "jdbc:sqlserver://localhost:1434; DatabaseName=INFO";
String user = "sa";
String password = "123";
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
pw.print("InstantiationException");
} catch (IllegalAccessException e) {
e.printStackTrace();
pw.print("IllegalAccessException");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println(e.toString());
pw.print("class not found");
}
try {
con = DriverManager.getConnection(dbURL, user, password);
stmt = con.createStatement();
String id, name, age;
String qurey = "select * from users where name = '" + userName
+ "'";
rs = stmt.executeQuery(qurey);
if (rs.next()) {
if (rs.getString("password").equals(pwd)) {
if (check != null) {
Cookie c = new Cookie("userName", userName);
Cookie c2 = new Cookie("pwd", pwd);
c.setMaxAge(2 * 7 * 24 * 60 * 60);
c2.setMaxAge(2 * 7 * 24 * 60 * 60);
resp.addCookie(c);
resp.addCookie(c2);
}
ServletContext sc = this.getServletContext();
int value=Integer.parseInt((String)sc.getAttribute("doublejun"));
value++;
sc.removeAttribute("doublejun");
sc.setAttribute("doublejun", value+"");
resp.sendRedirect("welcome");
} else {
resp.getWriter().print("密码错误");
// resp.sendRedirect("login");
}
} else {
resp.getWriter().print("用户名不存在");
// resp.sendRedirect("login");
}
} catch (SQLException e) {
e.printStackTrace();
pw.write(e.toString() + "fdsljasldkf");
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
@Override
public void destroy() {
//当服务器关闭时将内存中的网站访问量写入到文件中
ServletContext sc = this.getServletContext();
int value= Integer.parseInt((String)sc.getAttribute("doublejun"));
FileWriter fw = null;
BufferedWriter bw = null;
try {
fw = new FileWriter("F://times.txt");
bw = new BufferedWriter(fw);
bw.write(value+"");
bw.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
System.out.println(value+"");
}
}
@Override
public void init() throws ServletException {
//在服务器初始化的时候读取网站的访问次数
System.out.println("init!");
int value = 0;
FileReader fr = null;
BufferedReader br = null;
FileWriter fw = null;
BufferedWriter bw = null;
try {
fr = new FileReader("F://times.txt");
br = new BufferedReader(fr);
value=Integer.parseInt(br.readLine());
br.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
System.out.println(value+"");
}
//在服务器内存中创建ServletContext对象。用来记录并控制网站的访问量
ServletContext sc = this.getServletContext();
sc.setAttribute("doublejun",value+"");
}
}