String users = request.getParameter("username"); //获取登陆页面的用户名 
String pwd = request.getParameter("password"); //获取登陆页面的密码 
LogonForm logonForm = new LogonForm(); //实例化登陆form 
    String sql = "select * from DIM_USER_09 where user_id='" + users+ "' and user_pwd='" + pwd + "'"; //从数据库表中查询所登陆的用户名及密码是否存在。 
Statement stmt = null; 
ResultSet rs = null; 
try { 
DataConn DBC = new DataConn(); //实例化DataConn,来连接数据库。 
stmt = DBC.getConn().createStatement(); //通过connection连接数据库后,创建Statement语句。 
rs = stmt.executeQuery(sql);// 返回查询结果 
} catch (SQLException e) { 
e.printStackTrace(); //输出SQL异常 

try { 
  if (rs.next()) { 
      // response.sendRedirect("frammain.jsp"); 
response.sendRedirect("open_main1.html"); 
request.getSession().setAttribute("username", users); 
} else { 
response.sendRedirect("logon2.jsp"); 

} catch (SQLException e) { 
e.printStackTrace(); //输出SQL异常 


我又新建了个类,想获取上面设置的session参数,request.getSession().setAttribute("username", users); 
即用户名,但我不知道该怎么获取了 
注:我新建的不是servlet类,所以不能用request

解决方案 »

  1.   

    不是servlet类 难道不能声明变量,导入包?
      

  2.   

    session.getAttribute()"username";
    如果需要字符串 强制转换一下
      

  3.   

    就我个人的理解是,新建的类不属于Servlet范围,那么就无法获得SESSION中存放的数据,因为SESSION是建立在SERVLET交互之上的.或者是你在能够获得SESSION变量值的地方,把获得的值传到你新建的类里......
      

  4.   

    是否可以这样,再servlet类里面建一个获取session值的静态方法,然后可以直接
    在非servlet类里面调用。
    你可以试试
      

  5.   

    response.sendRedirect("open_main1.html"); 
    request.getSession().setAttribute("username", users); 
    应该换过来写吧
    request.getSession().setAttribute("username", users);
    response.sendRedirect("open_main1.html"); 
    在页面转向的时候,不会执行后面的代码,我想应该是这样的在类里,可以把request当做参数传进去
      

  6.   

    在非servlet类中写个方法,如public void getSession(HttpServletRequest request,HttpServletResponse response)方法,然后在servlet中调用这个方法就可以了。
      

  7.   

    session已经在内存里的东东
    在新类引入HttpServletRequest 获得
      

  8.   


    在WEB容器中,除非是后台的自主线程,可能与请求无关,所以拿不到Request,凡是处理前台请求的一系列逻辑,无论它是不是Servlet,必定是从某一个servlet发起后被调用的,
    只要在调用的时候,吧request作为参数传递过去就可以了。