1

我在开发 servlet 小程序通信程序时遇到了会话问题。用户成功登录后,我在 jsp 中有登录页面,我将用户引导到具有小程序的 index.jsp 页面。在重定向到 index.jsp 之前,我在 servlet 中设置了一个会话变量。在我的小程序中,我必须获取会话中的数据以及数据库和属性文件中的一些数据。我的代码是
//Servlet

if(action.equals("login")){
            uinfo = new UserInformation();

            String uid = request.getParameter("txt_UserName");
            String pwd = request.getParameter("pwd_PassWord");

            int i = uinfo.authenticateUser(uid, pwd);
            //System.out.println(i);
            if(i==1){
                session.setAttribute("uName", uid);
                request.getRequestDispatcher("index.jsp").forward(request, response);
else if(action.equals("applet")){
            try{

                output =  new ObjectOutputStream(response.getOutputStream());
                uinfob= new UserInformationBean();

               Properties prop = new Properties();


                    try {
                           prop.load(new FileInputStream(path+"/connection.properties"));
                    } catch (IOException ex) {
                            ex.printStackTrace();
                    }

              uinfob.setHost(prop.getProperty("host"));
              uinfob.setIs_Active("Y");
              uinfob.setUid(session.getAttribute("uName").toString());


                 output.writeObject(uinfob);
                 output.flush();

                //output.close();

            }catch(IOException iox){
                iox.printStackTrace();
            }catch(Exception e){
                e.printStackTrace();
            }finally{
                output.close();
            }
        }

在我的小程序中

public void init() {

    try{

        String queryString="action=applet";

        URL codeBase = getCodeBase();
        URL servletURL = new URL(codeBase.getProtocol(), codeBase.getHost(), codeBase.getPort(), "/SwingBrowser1/UserServlet?"+queryString);

         servletConnection = servletURL.openConnection();
         servletConnection.setDoInput(true);
         servletConnection.setDoOutput(true);
         servletConnection.setUseCaches(false);
         servletConnection.setDefaultUseCaches(false);
         servletConnection.setRequestProperty("Content-Type","application/octet-stream");
         getData();

    }catch(Exception e){
        e.printStackTrace();
    }

}
// TODO overwrite start(), stop() and destroy() methods

    public void getData()
    {
        try{
            ObjectInputStream input = new ObjectInputStream(servletConnection.getInputStream());


           UserInformationBean uib =(UserInformationBean)input.readObject();



             System.out.println(uib.getHost()+"-------------"+uib.getIs_Active()+"-----------------"+uib.getUid());
            input.close();
        }
        catch( Exception e)
        {
            e.printStackTrace();
        }

它出现了 java.io.EOFException 错误,我在我的 else servlet 块中使用了一个 sop 对此进行了测试。我之前设置的属性返回空值。

4

0 回答 0