同一用户的不同页面共享数据
1、cookie;2、sendRedirect跳转;3、session技术;4、隐藏表单提交(form)
sendRedirect 跳转 只能传递字符串,不能传递对象 welcome? userName = "admin" & password = "123456" 如果传递的是中文,还需要处理下
HttpServletResponse的sendRedirect 跳转是会发该URL到客户端,客户端再重定向把该URL请求发送到服务端来进行访问,重定向。
得到 session :HttpSession hs = request.getSession(true); 向session添加属性:hs.setAttribute(String name, Object val);
从session中得到某个属性 String name = hs.getAttribute(String name); 从session删除某个属性:hs.removeAttribute(String name);
学习中,一段代码,链接SERVER2000 过程中,死活是有问题,调试一天,总算解决,原来是MS 的数据库SERVER2000需要不定,哎,这鸡巴原因,真是无语了。顺便掌握了下netstat -an telnet 127.0.0.1 1433 等网络简单命令,也进一步提高了分析问题,解决问题的能力,也算有所收获。
package com.tooth;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
public class LoginCheck extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) {
/*
String username = req.getParameter("username");
String password = req.getParameter("password");
try {
res.sendRedirect("Welcome?username=" + username + "&password=" + password);
} catch(Exception e) {
e.printStackTrace();
}
*/
/*
Connection cn = null;
Statement sm= null;
ResultSet rs= null;
String sql ="";
try {
String username = req.getParameter("username");
String password = req.getParameter("password");
sql = "select top 1 * from users where username='"+username+"'and passwd='"+password+"'";
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
try {
PrintWriter pw = res.getWriter();
pw.println("welcome!" + username + sql);
} catch(Exception e) {
e.printStackTrace();
}
cn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=xhpb","sa","sa");
sm = cn.createStatement();
rs = sm.executeQuery(sql);
if(rs.next()) {
HttpSession hs = req.getSession(true);
hs.setAttribute("username",username);
hs.setAttribute("password",password);
hs.setMaxInactiveInterval(20);
res.sendRedirect("Welcome?username=" + username + " &password=" + password);
} else {
res.sendRedirect("Login");
}
} catch(Exception e) {
e.printStackTrace();
} finally {
try {
if(rs != null) {
rs.close();
}
if(sm != null) {
sm.close();
}
if(cn != null) {
cn.close();
}
} catch(Exception e) {
e.printStackTrace();
}
}
*/
String username = req.getParameter("username");
String password = req.getParameter("password");
String sql = "select top 1 * from users where username='"+username+"'and passwd='"+password+"'";
Statement sm= null;
ResultSet rs= null;
Connection conn = null;
try{
DBConnectionManager dcm = new DBConnectionManager();
conn = dcm.getConnection();
sm = conn.createStatement();
rs = sm.executeQuery(sql);
if(rs.next()) {
res.sendRedirect("Welcome?username=" + username + "&password=" + password);
} else {
res.sendRedirect("Login");
}
} catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req, HttpServletResponse res) {
this.doGet(req, res);
}
}
class DBConnectionManager {
//SQLServer
private String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
private String url = "jdbc:microsoft:sqlserver://192.168.1.110:1433;DatabaseName=xhpb";
private String user = "sa";
private String password = "sa";
private static String message = "success!";
public void setDriverName(String newDriverName) {
driverName = newDriverName;
}
public String getDriverName() {
return driverName;
}
public void setUrl(String newUrl) {
url = newUrl;
}
public String getUrl() {
return url;
}
public void setUser(String newUser) {
user = newUser;
}
public String getUser() {
return user;
}
public void setPassword(String newPassword) {
password = newPassword;
}
public String getPassword() {
return password;
}
public Connection getConnection() {
try {
Class.forName(driverName);
return DriverManager.getConnection(url, user, password);
} catch (Exception e) {
System.out.println("lianjie cuowu!");
message = "fail!";
return null;
}
}
public static void main(String[] args) {
String sql = "select top 1 * from users where username='"+"admin"+"'and passwd='"+"123456"+"'";
Statement sm= null;
ResultSet rs= null;
Connection conn = null;
try{
DBConnectionManager dcm = new DBConnectionManager();
conn = dcm.getConnection();
sm = conn.createStatement();
rs = sm.executeQuery(sql);
if(rs.next()) {
System.out.println("1111!");
} else {
System.out.println("l2222!");
}
}
catch(Exception e) {
e.printStackTrace();
} finally {
try {
if(rs != null) {
rs.close();
}
if(sm != null) {
sm.close();
}
if(conn != null) {
conn.close();
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
}