Wrox Home  
Search P2P Archive for: Go

  Return to Index  

servlets thread: compilation errors


Message #1 by "b. venkata ravi" <ravivenkata@u...> on Thu, 24 May 2001 06:57:14
The ServletContext.getInitParameter(), HttpSession.getAttribute(), and
HttpSession.setAttribute() methods were added in the Servlet 2.2 API, so
you'll get these errors if you're compiling against an earlier version of
the API. (Beware having an old servlet.jar in your CLASSPATH even if you're
using a more recent servlet engine.)

The precursors to HttpSession's new getAttribute() setAttribute() methods
were getValue() and putValue(); ServletContext.getInitParameter() is a new
feature of the 2.2 API.

Richard Huss
Technical Architect, Wrox Press Ltd
richardh@w...
www.wrox.com


-----Original Message-----
From: b. venkata ravi [mailto:ravivenkata@u...]
Sent: Thursday, May 24, 2001 7:57 AM
To: Servlets
Subject: [servlets] compilation errors


Hai Java friends,
        I am getting compilation errors for chat program. please give 
solution. Thanks in advance.

Compilation errors:

ChatRoomServlet.java:14: Method getInitParameter(java.lang.String) not 
found in interface javax.servlet.ServletContext.
    chatRoomPath = context.getInitParameter("CHATROOM_PATH");
                                           ^
ChatRoomServlet.java:15: Method getInitParameter(java.lang.String) not 
found in interface javax.servlet.ServletContext.
    listRoomsPath = context.getInitParameter("LISTROOMS_PATH");
                                            ^
ChatRoomServlet.java:78: Method getAttribute(java.lang.String) not found 
in interface javax.servlet.http.HttpSession.
    String profileName = (String) session.getAttribute("profileName");
                                                      ^
ChatRoomServlet.java:86: Method setAttribute(java.lang.String, 
java.lang.String) not found in interface javax.servlet.http.HttpSession.
      session.setAttribute("profileName", profileName);
                          ^
ChatRoomServlet.java:94: Method setAttribute(java.lang.String, 
java.lang.String) not found in interface javax.servlet.http.HttpSession.
        session.setAttribute("profileName", profileName);
                            ^
ChatRoomServlet.java:105: Method getAttribute(java.lang.String) not found 
in interface javax.servlet.http.HttpSession.
    String roomName = (String) session.getAttribute("roomName");
                                                   ^
ChatRoomServlet.java:114: Method setAttribute(java.lang.String, 
java.lang.String) not found in interface javax.servlet.http.HttpSession.
      session.setAttribute("roomName", roomName);
                          ^
ChatRoomServlet.java:122: Method setAttribute(java.lang.String, 
java.lang.String) not found in interface javax.servlet.http.HttpSession.
        session.setAttribute("roomName", roomName);
                            ^
8 errors


ChatRoomServlet.java:
---------------------
import javax.servlet.*;
import javax.servlet.http.*;

import java.io.*;
import java.net.*;
import java.util.*;

public class ChatRoomServlet extends HttpServlet {
  String chatRoomPath;
  String listRoomsPath;

  public void init() {
    ServletContext context = getServletContext();
    chatRoomPath = context.getInitParameter("CHATROOM_PATH");
    listRoomsPath = context.getInitParameter("LISTROOMS_PATH");
  } 

  public void doGet(HttpServletRequest req, HttpServletResponse res) 
          throws IOException, ServletException {

    res.setContentType("text/html");
    PrintWriter out = res.getWriter();

    ChatRoom room = getRoom(req, res);
    if (room == null) {
      return;   // This should not happen.
    } 

    // Check if it's a request for a message list or a form
    String listPar = req.getParameter("list");
    if (listPar != null && listPar.equals("true")) {
      writeMessages(out, room, getProfileName(req));
    } else {
      out.println("<HTML>");
      out.println("<BODY>");
      out.println("<FORM METHOD=\"POST\" ACTION=\"" 
                  + res.encodeUrl(chatRoomPath) + "\" TARGET=\"_top\">");

      out.println("<p>Enter your message:</p>");
      out.println("<INPUT NAME=\"msg\" SIZE=\"30\">");

      // Add a Submit button
      out.println("<P><INPUT TYPE=SUBMIT VALUE='Send Message'>");

      // Add an Exit button
      out.println("</FORM>");
      out.println("<FORM ACTION=\"" + res.encodeUrl(listRoomsPath) 
                  + "\" METHOD=\"GET\" TARGET=\"_top\">");
      out.println("<INPUT TYPE=SUBMIT VALUE=Exit>");
      out.println("</FORM>");

      out.println("</BODY></HTML>");
    } 
    out.close();
  } 

  public void doPost(HttpServletRequest req, HttpServletResponse res) 
          throws IOException, ServletException {
    res.setContentType("text/html");

    ChatRoom room = getRoom(req, res);
    if (room == null) {
      return;
    } 

    String profileName = getProfileName(req);

    // Save message if any
    String msg = req.getParameter("msg");
    if (msg != null && msg.length() != 0) {
      room.addChatEntry(new ChatEntry(profileName, msg));
    } 
    writeFrame(res, room);
  } 

  private String getProfileName(HttpServletRequest req) {
    HttpSession session = req.getSession(true);
    String profileName = (String) session.getAttribute("profileName");
    if (profileName == null) {

      // Entered a room for the first time?
      profileName = req.getParameter("profileName");
      if (profileName == null || profileName.length() == 0) {
        profileName = "A spineless spy";
      } 
      session.setAttribute("profileName", profileName);
    } else {

      // Entered a new room with a new name?
      String newName = req.getParameter("profileName");
      if (newName != null && newName.length() > 0 
              &&!newName.equals(profileName)) {
        profileName = newName;
        session.setAttribute("profileName", profileName);
      } 
    } 
    return profileName;
  } 

  private ChatRoom getRoom(HttpServletRequest req, 
                           HttpServletResponse res) throws IOException {
    HttpSession session = req.getSession(true);
    PrintWriter out = res.getWriter();

    String roomName = (String) session.getAttribute("roomName");
    if (roomName == null) {

      // Just entered?
      roomName = req.getParameter("roomName");
      if (roomName == null || roomName.length() == 0) {
        writeError(out, "Room not specified");
        return null;
      } 
      session.setAttribute("roomName", roomName);
    } else {

      // Entered a new room?
      String newRoom = req.getParameter("roomName");
      if (newRoom != null && newRoom.length() > 0 
              &&!newRoom.equals(roomName)) {
        roomName = newRoom;
        session.setAttribute("roomName", roomName);
      } 
    } 

    HashMap roomList = 
      (HashMap) getServletContext().getAttribute("roomList");
    ChatRoom room = (ChatRoom) roomList.get(roomName);
    if (room == null) {
      writeError(out, "Room " + roomName + " not found");
      return null;
    } 
    return room;
  } 

  private void writeError(PrintWriter out, String msg) {
    out.println("<HTML>");
    out.println("<HEAD><TITLE>Error</TITLE></HEAD>");
    out.println("<BODY>");
    out.println("<H1>Error</H1>");
    out.println(msg);
    out.println("</BODY></HTML>");
  } 

  private void writeFrame(HttpServletResponse res, 
                          ChatRoom room) throws IOException {
    PrintWriter out = res.getWriter();

    out.println("<HTML>");
    out.println("<HEAD><TITLE>" + room.getName() + "</TITLE></HEAD>");
    out.println("<FRAMESET ROWS='50%,50%' BORDER=0 FRAMEBORDER=NO>");
    out.println("<FRAME SRC=\"" + res.encodeUrl(chatRoomPath) 
                + "?list=true\" NAME=\"list\" SCROLLING=\"AUTO\">");
    out.println("<FRAME SRC=\"" + res.encodeUrl(chatRoomPath) 
                + "?list=false\" NAME=\"form\" SCROLLING=\"AUTO\">");
    out.println("<NOFRAMES>");
    out.println("<BODY>");
    out
      .println("Viewing this page requires a browser capable of displaying 
frames.");
    out.println("</BODY>");
    out.println("</NOFRAMES>");
    out.println("</FRAMESET>");
    out.println("</HTML>");
    out.close();
  } 

  private void writeMessages(PrintWriter out, ChatRoom room, 
                             String profileName) {
    StringBuffer sb = new StringBuffer();

    out.println("<HTML>");
    out.println("<HEAD><META http-equiv=\"refresh\" content=\"5
\"></HEAD>");
    out.println("<BODY>");
    out.println("<B>Room: " + room.getName() + "</B><BR>" 
+ "<B>Identity: " 
                + profileName + "</B><BR>");

    // List all messages in the room
    if (room.size() == 0) {
      out
        .println("<FONT COLOR=RED>There are no messages in this room 
yet</FONT>");
    } else {
      Iterator entries = room.iterator();
      while (entries.hasNext()) {
        ChatEntry entry = (ChatEntry) entries.next();
        if (entry == null) {
          continue;
        } 
        String entryName = entry.getProfileName();
        if (entryName.equals(profileName)) {
          out.print("<FONT COLOR=BLUE>");
        } 
        out.println(entryName + " : " + entry.getMessage() + "<BR>");
        if (entryName.equals(profileName)) {
          out.print("</FONT>");
        } 
      } 
    } 
    out.println("</BODY></HTML>");
  } 
}

with regards
ravi

  Return to Index