因为你还没有将这个页面提交,根本取不到request对象,

解决方案 »

  1.   

    谢谢你的帮助,但是这个页面根本编译不过去,说request不是对象
      

  2.   

    这个页面是做什么用? request 从那里来啊?
    在参数中加入 request 对象吧
      

  3.   

    编译时没有包含 severlet.jar 文件吧
      

  4.   

    包含啦,
    import java.sererlet.http.*;
      

  5.   

    最好不要编译JSP,在运行的时候,让服务器去编译好了,好多时候JSP编译是有问题的。
      

  6.   

    但是我就是放到了WEB服务器后,编译不通过啊
      

  7.   

    放到一个类中来处理吧,方法写全,是比如public class Browser(){
          public static String getString(HttpRequst request,String pname){
             String result = "";
    if(request.getParameter(value)!=null)
    result = request.getParameter(value).trim();
    return result;
          }}
      

  8.   

    HttpRequst包含在哪个文件里?应该import什么?
      

  9.   

    不用包含也不用写import
    request是编译的时候就有的成员变量
    你是不是<%! -> <% ?
      

  10.   

    <%@ page import="javax.servlet.http.*" %>
    <%!
    String get_Parameter(ServletRequest request,String value)
    {
    String result = "";
    if(request.getParameter(value)!=null)
    result = request.getParameter(value).trim();
    return result;
    }
    String tmp = get_Parameter(ServletRequest request,"fold_id");
    %>
    完整的
      

  11.   

    错了,应该是
    <%@ page import="javax.servlet.http.*" %>
    <%!
    String get_Parameter(String value)
    {
    String result = "";
    if(request.getParameter(value)!=null)
    result = request.getParameter(value).trim();
    return result;
    }
    String tmp = get_Parameter("fold_id");
    %>
      

  12.   

    需要引入javax.servlet.http.HttpServletRequest;
    <%@ page import="javax.servlet.http.*" %>
    <%!
    String get_Parameter(HttpServletRequest request,String value)
    {
    String result = "";
    if(request.getParameter(value)!=null)
    result = request.getParameter(value).trim();
    return result;
    }
    String tmp = get_Parameter(request,"fold_id");
    %>
      

  13.   

    在JSP中如何定义方法
    你可以定义方法,但是你不能直接访问JSP的内置对象,而是通过参数的方法传递。<%@ page import="javax.servlet.http.*" %>
    <%!
    String get_Parameter(HttpServletRequest request,String value)
    {
    String result = "";
    if(request.getParameter(value)!=null)
    result = request.getParameter(value).trim();
    return result;
    }

    %>
    <%String tmp = get_Parameter(request,"fold_id");%>
      

  14.   

    <%! %>中的属于自定义的东西,不可以访问JSP的内置对象,OVER
      

  15.   

    在jsp中<%!%>这里面定义的是一个函数,在函数中调用request就必须要将request做为参数传入
    定义为:String get_Parameter(HttpServletRequest request,String value)
    调用为:get_Parameter(request,vaule);
      

  16.   

    这个问题要看jsp文件编译成servlet的临时java文件就知道,以下以weblogic为例子:import java.io.*;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.servlet.jsp.*;
    import javax.servlet.jsp.tagext.*;// User imports(注意:这儿开始的是你在jsp中的import)import java.util.*; //[ /schedule/weekPlanView.jsp; Line: 4]
    import java.sql.Timestamp; //[ /schedule/weekPlanView.jsp; Line: 9]
    // built-in init parameters:
    // boolean             _verbose -- wants debugging// Well-known variables:
    // JspWriter out                  -- to write to the browser
    // HttpServletRequest  request    -- the request object.
    // HttpServletResponse response   -- the response object.
    // PageContext pageContext        -- the page context for this JSP
    // HttpSession session            -- the session object for the client (if any)
    // ServletContext application     -- The servlet (application) contextpublic final class __JSP文件名称
    extends
    weblogic.servlet.jsp.JspBase
    implements weblogic.servlet.jsp.StaleIndicator
    {
        
    // 注意,这是你用<%! %>定义的方法,你想怎么能直接引用request呢?
    String get_Parameter(String value)
    {
    String result = "";
    if(request.getParameter(value)!=null)
    result = request.getParameter(value).trim();
    return result;
    }    
        .........................................
        .........................................
        
        
        
        public void _jspService(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException 
        {  
            // 注意,预定义的对象在这个context里才能引用
            // declare and set well-known variables:
            javax.servlet.ServletConfig config = getServletConfig();
            javax.servlet.ServletContext application = config.getServletContext();
            javax.servlet.jsp.tagext.Tag _activeTag = null;
            // variables for Tag extension protocol
            
            Object page = this;
            javax.servlet.jsp.JspWriter out;
            javax.servlet.jsp.PageContext pageContext =
            javax.servlet.jsp.JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true, 8192, true);
            
            response.setHeader("Content-Type", "text/html; charset=GBK");
            out = pageContext.getOut();
            JspWriter _originalOut = out;
            
            javax.servlet.http.HttpSession session = request.getSession(true);
            
            
            
            try { // error page try block
                
                response.setContentType("text/html;charset=GBK");
                
                out.print("\r\n");
    ...............
    ...............
     
            } catch (Throwable __ee) {
            }
            
            
            //before final close brace...
        }
        
        
    }
      

  17.   

    jsp编译成servlet时:
    你在jsp中写的大部分代码都会出现到_jspService(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)方法里,这个方法里可以使用request,response,application等对象。而<%!...%>中定义的变量将作为类的成员变量出现,而定义的方法就作为一个独立的方法出现,这个方法里当然不能引用request等对象要引用的话,只能以参数形式传入
      

  18.   

    晕死了。
    需要载入什么的吗????/
    request 是JSP的内部对象,前提是你这个页面必须是JSP,另外你得先提交后,在提交后的页面才可以用的啊。
      

  19.   

    首先我觉得你在页面中写这么一个方法实在是没有任何意义的,你可以在一个类中封装相关的方法。其次,你需要将request作为参数传进方法才能正常运行,明白了么?
      

  20.   

    定义一个变量:private javax.servlet.http.HttpServletRequest request;
      

  21.   

    好像servlet那样把request和response传到函数去。
      

  22.   

    我好象记得在jsp中<% %>间的代码以及html,全部都会放进一个成员函数中,而该函数的参数就是request和response,所以<% %>间的代码可以访问request,而用<%!定义的的函数是作为servlet的成员函数的,所以访问不到。应该可以自己编写代码,把request也作为参数传到你自己定义的函数中。
      

  23.   

    感叹号去掉能编译吗?还是看看JSP生成的.java文件吧.什么都明白了.
      

  24.   

    楼主的意思是这样的吧
    test.asp
    <BODY>
    <form action="hello.jsp" method="post">
    <input type="text" name="myname">
    <input type="submit" value="OK">
    </form>
    </BODY>
    hello.asp用bean来接收参数
    <%@ page contentType="text/html;charSet=GBK"%>
    <%@ page import="bean.*"%>
    <%
    myBean a=new myBean(request,response);
    out.println(a.getStr("myname"));
    %>bean代码
    package bean;
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;public class myBean extends HttpServlet
    {
    private HttpServletRequest request;
    private HttpServletResponse response; public myBean(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException{
    this.request=req;
    this.response=res;
    } public String getStr(String obj){
    return request.getParameter(obj);
    }
    }给我加分啊
      

  25.   

    你为什么不script来写
    <script language="javascript">
    function get_Parameter(value)
    {
      var result = "";
      if(request.getParameter(value)!=null)
        result = request.getParameter(value).trim();
      return result;
    }
    </script>
      

  26.   

    第一种方法:去掉!
    第二种方法:传request对象。因jsp内置对象在service方法中,自定义成员方法不可用。
      

  27.   


    个人理解:<%!....%>
    改成<%  %>
    因为<%!...%>是静态区段,在加载过程中会被web应用放在application作用域中,而你在其中要取的request作用域的内容,所以会出问题。
      

  28.   

    补充一点:
    作用域大小
    page<request<session<application
    所以他们的访问范围是:page>request>session>application即page中可以访问request变量,session变量 等等
    而request就无法访问到page作用域的变量。
      

  29.   

    好好的<%%>不用,为什么硬要用<%!%>呢?
      

  30.   

    回复人: zhanghongcai(战功才) ( ) 信誉:100  2005-06-24 17:13:00  得分: 0  
     
     
       第一种方法:去掉!
    第二种方法:传request对象。因jsp内置对象在service方法中,自定义成员方法不可用。
      
    这是个好材料:默认的 
    JSP 中的内容都会在编译时写到 Servlet 一个方法里 , 你的所有 不带 ! 的东西都被认为 在这个方法里, 参数 method 就是用来指定这些内容是生成到 doPost 还是 doGet 方法里, 
    LZ 那个! 方法会被子放到 编译生成的方法 之外, 当然也就不能访问 内置对象, 因为内置对象也是生成的那个方法的局部变量.打开 Tomcat JSP 编译生成文件的目录 ( 在 %tomcat%/work 的你的 ServletContext 对应的子目录下面), 删除所有 _xxx.class ,然后打开网页,等它编译 , 当看到 .java 出来时,手脚要快, 赶快另存了(按住 Ctrl , 鼠标一拖).  然后打开来看看内容.
     
      

  31.   

    <%!
    //这里面的东西,在JSP转译为Servlet时是,是类里面的类级别的东西。
    //所以你这个函数根本不在  service(){}函数内,又怎么会可以使用request
    //对象呢?  如果你要在这个函数中使用request,就必须在函数中增加(HttpServlet
    //Request  request),然后在<%  %>中用参数request中调用这个方法。
    %>