在JSP中可以通过以下方式获取:<%String SERVER_NAME = (String)application.getAttribute("SERVER_NAME");%>
在servlet中可以通过以下方式获取:String SERVER_NAME =(String)context.getAttribute("SERVER_NAME");

解决方案 »

  1.   

    在servlet里输出所有的HTTP DATA
    public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<html>");out.println("<head>");out.println("<title>Parameter Servlet</title>");out.println("</head>");out.println("<body>");// Get an enumeration of the parameter namesEnumeration parameters = request.getParameterNames();String param = null;// Iterate over the paramater names,// getting the parameters valueswhile ( parameters.hasMoreElements() ) {param = (String)parameters.nextElement();out.println(param + " : " +request.getParameter(param) +"<BR>");}out.println("</body></html>");out.close();}
      

  2.   

    在bean中如何用getAttribute("SERVER_NAME"),得到"SERVER_NAME"值把request作为参数传递给bean
    在bean中
    ServletContext sc=request.getSession().getServletContext();
    String serverName=(String)sc.getAttribute("SERVER_NAME");在 servlet 中如何用getAttribute("SERVER_NAME"),得到"SERVER_NAME"值在servlet中
    String serverName=getServletContext().getAttribute("SERVER_NAME");
      

  3.   

    多谢楼上们的回答
    在bean中  
    有没有不需要传request得到  "SERVER_NAME  "的方法?
      

  4.   

    恐怕不行。不过你可以尝试把SERVER_NAME放在配置文件,例如(xxx.properties),然后写个singleton类来管理这些变量。
      

  5.   

    是这样的
    比如我有一个普通bean:log类,需要加载log4j.properties
    我需要获得web的根路径请问如何能够获得?
      

  6.   

    不是很明白,你要获得web的根路径并在其目录下面寻找log4j.properties还是从log4j.properties中读取web的根路径?
      

  7.   

    获得web的根路径找log4j.properties谢谢rainshow的回答
      

  8.   

    不用这么麻烦吧。这样的满足你的要求吗?我想你的那个bean应该在web-inf/classes/下面吧Properties props=new Properties();
    try {
    props.load(this.getClass().getResourceAsStream("/log4j.properties"));
    //这个路径对应web-inf/classes/log4j.properties
    }
    catch(IOException e) {
    //........
    }
      

  9.   

    呵呵,谢谢回答
    我想有这样一种理想情况:
    服务器启动后,直到服务器关闭,期间一直存在一个或多个变量或多个集合,我可以随心所欲的使用
    这些变量是无法在xml文件中配置的,因为事先不知道,比如说web运行的根路径等于是我就想在servlet中初始化好这些变量,以后可以方便的使用
    如果我的log4j.properties不在web-inf/classes下,props.load(this.getClass().getResourceAsStream(  "/log4j.properties  ")); 恐怕就不起作用了
      

  10.   


    依你的意思,log4j.properties放哪儿呢?
      

  11.   

    比如和web-inf同级目录或和jsp同级目录等不定
      

  12.   

    一样的啊
    一开始也是为了load文件,文件在根路径下,servlet初始化的时候得到web根路径,放在"SERVER_NAME"中
    String  prefix  =    getServletContext().getRealPath(  "/");
    ServletContext  context  =  getServletContext();  
    context.setAttribute("SERVER_NAME",prefix);  然后就是在bean中得到这个路径"SERVER_NAME"的值
    或者不需要初始化直接在bean中得到也可以啊其实就是一个问题,呵呵,简单的说就是在普通bean中如何得到web根路径的问题
      

  13.   

    想得到根路径又不想传递request。方法有2种1 写个单态类(singleton)来传递prefix参数。2 通过this.getClass().getResource("/").getPath();得到当前classes所在的路径。以我的为例(/F:/docs/WEB-INF/classes/),通过前面的那个得到log4j.properties的路径应该没问题了吧。
      

  14.   

    比较了一下方法1跟传递request没什么本质区别。
    方法2可能更符合你的要求,如果你想更灵活一些,可以通过(/F:/docs/WEB-INF/classes/)在整个(/F:/docs)目录来搜索log4j.properties的位置。
      

  15.   

    呵呵,谢谢rainshow了,我想我已经得到我想要的答案了
    晚上结贴,我好像还有一个贴没结,一并结了:)
      

  16.   

    这种数据当然放入静态变量最好了.系统有些简单静态参数在启动的时候加载,那就做个类存这些静态变量数据.至于单态类(singleton)我觉得没必要了,搞的复杂了.