jsp页面里,为什么在简单的函数里,都不能用request对象?在线等待

答案2003 2005-06-23 10:39:44
<%!
String get_Parameter(String value)
{
String result = "";
if(request.getParameter(value)!=null)
result = request.getParameter(value).trim();
return result;
}
%>
...全文
902 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
hainang1234 2005-06-24
  • 打赏
  • 举报
回复
感叹号去掉能编译吗?

还是看看JSP生成的.java文件吧.什么都明白了.
dlxu 2005-06-24
  • 打赏
  • 举报
回复
把那个感叹号去掉
马前小卒 2005-06-24
  • 打赏
  • 举报
回复
我好象记得在jsp中<% %>间的代码以及html,全部都会放进一个成员函数中,而该函数的参数就是request和response,所以<% %>间的代码可以访问request,而用<%!定义的的函数是作为servlet的成员函数的,所以访问不到。应该可以自己编写代码,把request也作为参数传到你自己定义的函数中。
良少 2005-06-24
  • 打赏
  • 举报
回复
<%!
//这里面的东西,在JSP转译为Servlet时是,是类里面的类级别的东西。
//所以你这个函数根本不在 service(){}函数内,又怎么会可以使用request
//对象呢? 如果你要在这个函数中使用request,就必须在函数中增加(HttpServlet
//Request request),然后在<% %>中用参数request中调用这个方法。
%>
humanity 2005-06-24
  • 打赏
  • 举报
回复
回复人: 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 , 鼠标一拖). 然后打开来看看内容.

jolestar 2005-06-24
  • 打赏
  • 举报
回复
好好的<%%>不用,为什么硬要用<%!%>呢?
usaspy 2005-06-24
  • 打赏
  • 举报
回复
补充一点:
作用域大小
page<request<session<application
所以他们的访问范围是:page>request>session>application

即page中可以访问request变量,session变量 等等
而request就无法访问到page作用域的变量。
usaspy 2005-06-24
  • 打赏
  • 举报
回复

个人理解:

<%!....%>
改成<% %>
因为<%!...%>是静态区段,在加载过程中会被web应用放在application作用域中,而你在其中要取的request作用域的内容,所以会出问题。
张洪財 2005-06-24
  • 打赏
  • 举报
回复
第一种方法:去掉!
第二种方法:传request对象。因jsp内置对象在service方法中,自定义成员方法不可用。
leon_jiang 2005-06-24
  • 打赏
  • 举报
回复
你为什么不script来写
<script language="javascript">
function get_Parameter(value)
{
var result = "";
if(request.getParameter(value)!=null)
result = request.getParameter(value).trim();
return result;
}
</script>
netwar 2005-06-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);
}
}

给我加分啊
垲垲 2005-06-23
  • 打赏
  • 举报
回复
放到一个类中来处理吧,方法写全,是比如

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;
}

}
答案2003 2005-06-23
  • 打赏
  • 举报
回复
但是我就是放到了WEB服务器后,编译不通过啊
blasterboy 2005-06-23
  • 打赏
  • 举报
回复
最好不要编译JSP,在运行的时候,让服务器去编译好了,好多时候JSP编译是有问题的。
答案2003 2005-06-23
  • 打赏
  • 举报
回复
包含啦,
import java.sererlet.http.*;
垲垲 2005-06-23
  • 打赏
  • 举报
回复
编译时没有包含 severlet.jar 文件吧
答案2003 2005-06-23
  • 打赏
  • 举报
回复
应该怎样加?可以改一下上面这个吗?初学
还有调用的时候,应该怎样传参数
XIHSHI 2005-06-23
  • 打赏
  • 举报
回复
<%! ? <%

?
垲垲 2005-06-23
  • 打赏
  • 举报
回复
这个页面是做什么用? request 从那里来啊?
在参数中加入 request 对象吧
答案2003 2005-06-23
  • 打赏
  • 举报
回复
谢谢你的帮助,但是这个页面根本编译不过去,说request不是对象
加载更多回复(19)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧