我通过如下代码读取xunjian2.jsp文件后,将文件内容以response流的方式输出到页面上,但是<%%>中的java代码不被执行,不知道什么原因,是因为逐行输出后该段代码被识别成一般文本还是其他什么原因
我是想在输出的页面得到request对象中的值,有什么办法么PrintWriter fs=response.getWriter();
InputStreamReader isr = new InputStreamReader(new FileInputStream("D:/xunjian2.jsp"), "UTF-8");
BufferedReader b=new BufferedReader(isr);
String s=null;

while ((s=b.readLine())!=null){
fs.write(s);
}

fs.flush();
fs.close();xunjian2.jsp文件内容如下
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title></head>
<body>
<div style="width: 100%;vertical-align: middle;color: #FFF;">
<%
String id1="111111111";
String id2=request.getParameter("procInstID");
out.print(id2);
%>
<script type="text/javascript">
var id1='<%=id1%>';
alert(id1);
</script>
<div>
</body>
</html>

解决方案 »

  1.   

    你读出一个jsp,就只能以文本形式输出到界面啊?因为,你这里只是输出一段文本而已,你想要输出以下解析的信息,还必须解析这个jsp才行。
      

  2.   

    当客户端请求一个Jsp文件时,服务器端识别出被请求的是Jsp文件后,会将该Jsp文件转换成一个Servlet,然后编译执行该Servlet,<%%>中的代码是在该Servlet中执行,向客户端输出Html代码也是由该Servlet完成的。如你这样的做法,是直接将Jsp文件以文本方式输出到客户端,当然<%%>中的代码不会执行,这时候Jsp文件与一个纯文本文件无异。要Jsp被解析,只要将该Jsp请求转发给服务器,Tomcat(或别的JSP容器)自然会干这个事。
      

  3.   

    因为这个展现给客户端的jsp是response流刷出来的,再次请求这个jsp就不存在了,怎么能再次请求呢
      

  4.   


    正确答案在此。你读入的不过是字符串,是没办法执行的。如果你想执行一个jsp中的代码,除非自己写一个web容器,或者模板引擎。
      

  5.   

    还有其他的方法么,能够让我输出jsp内容,而不是文本内容
      

  6.   

    干吗非要这样实现,麻烦呀,这种方法除非你在写一个jsp解析器,解析好了以后在输出,你输出的内容总得浏览器可以解析吧。
      

  7.   

    需求是这样的,用户可以任意修改跳转返回页面jsp,而且跳转返回页面不能写死成某个固定页面,因为还涉及到返回页面的版本控制,修改后服务器不能重启,如果是tomcat固然好办,替换跳转返回的jsp文件就可以了,但是weblogic这样的容器就不成了,设置成商品模式而非开发模式后,不重启清缓存修改就不生效,所以才想到流输出动态页面的方案