日期:2014-05-17  浏览次数:20873 次

HttpSession session = request.getSession()的问题
import java.sql.*; //导入数据库操作的类
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import java.util.*;
import javax.servlet.http.HttpSession;

public class DBConnAccess { //构造方法,初始化
private Connection conn; //连接对象
  private Statement stmt; //语句对象
  private ResultSet rs; //结果集对象
  private String accessdriver; //保存Access驱动程序字符串
  private String accessURL; //保存Access连接字符串
  public DBConnAccess(){
  //Access驱动程序
  accessdriver = "sun.jdbc.odbc.JdbcOdbcDriver";
  //连接字符串
  accessURL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
  conn = null;
  }
  public Connection getConnToAccess(String dbpath){
  try{
  HttpSession session = request.getSession();

  Object sPath = session.getAttribute("dbpath");
  accessURL = accessURL + dbpath;
  Class.forName(accessdriver);
  conn = DriverManager.getConnection(accessURL);
  }catch(Exception e){
  System.out.println("Error");
  System.err.println(e.getMessage());
  }
  return conn;
  }
}
在么导入servlet.api.jar包之前 HttpSession session = request.getSession();都错
导入之后request.getSession报错 
高手能告诉我原因吗?

------解决方案--------------------
extends HttpServlet
------解决方案--------------------
很简单啊,仔细看代码.
没导入jar之前,在你的开发环境下没有HttpSession这个类,肯定会爆错了,
加入jar之后request,getSession()报错也很容易明白,你没发现你的代码中不存在request参数吗?
在servlet当中,request参数是在post,get方法中作为方法传输引入的,在你的代码中,明显不存在这个东西。
------解决方案--------------------
你是想问如何取得session是吗?但是你给的代码是数据库连接的代码。
我觉得你这地方应该好好在看看,session应该从servlet中获得
Java code

import   java.io.*;
import   javax.servlet.*;
import   javax.servlet.http.*;
public   class   TestServlet   extends   HttpServlet
  {
    public   void   doPost(HttpServletRequest   req,HttpServletResponse   res)   throws   ServletException,IOException
      {
   //获得session
      HttpSession session = request.getSession();
//获得session中保留的信息
     String userId= session.getAttribute("userId").toString();//取出为Object类型
//给session中存储数据
     session.setAttribute("name","JACK")
      }
  }

------解决方案--------------------
extends HttpServlet之后重写public void doGet(HttpServletRequest request, HttpServletResponse response)方法.
------解决方案--------------------
没有看到你的request从那里来的呢
一个对象不能凭空产生的