初学jsp有个疑惑<% String str="this is a test of jsp";%>我想用struts标签取这个值,该怎么做。这段代码是否只存在java虚拟机上,或者是页面的application中?还是怎么样的。JavaJSP

解决方案 »

  1.   

    首先,jsp文件都编译成class文件来运行的,在jsp中<% %>的代码,如果我没记错的话 应该是在编译之后的servlet的service方法内部,<%=//要输出的数据%> 应该是直接输出,<%!//声明语句 %>此处定义的变量将成为此jsp页面的全局变量,此处定义的函数将成为此jsp页面的公共函数。  
      

  2.   

    <% String str="this is a test of jsp";%> 这段代码,在下面如果你想输出str应该可以
    <%=str%>来直接输出,使用的话也可以<% str.equals("");%>类似的使用
      

  3.   

    你可以写一个简单的jsp页面 然后看看它编译之后的class文件就比较清楚了。
      

  4.   

    哦,懂了。也就是说一块<% %>代码就是一个servlet <%= %>相当于其中的out.print()方法,是这样么?
    还有个问题,如果我jsp页面有两块<% %>的java代码,那么这两个是否生成在同一个servlet,或者是生成了两个servelt,jsp按照代码顺序分别编译然后返回相应值,互不干扰?
      

  5.   

    感谢你的回答,我看了下tomcat里面的jsp java文件,现在知道了,每个jsp页面只生成了一个servlet.谢谢你的帮助!!
      

  6.   

    一个jsp页面编译成一个servlet不是说一块<% %>代码就是一个servlet,
    而是一个<% %>相当于servlet的service()方法里的一段java代码
    就像你<% String str ="123" ;%>
    编译下来应该是
    servlet.service(request,response){
      String str ="123" ;
    }
    应该是这样的。
      

  7.   

    明白就好,我也太久没接触servlet了,忘的差不多了。框架给人都用傻了。。明白就结账吧
      

  8.   

    在jsp中掺入java代码,用struts标签好像不能应用java中的变量,以前我也想用来着,好像不能解决,具体什么原因没做深入研究
      

  9.   

    你可以在tomcat中查看jsp页面编译之后的类文件
      

  10.   

    这个,我稍稍研究了下,应该不能用 struts取jsp中的值(除非已经把值传到request或者session中)。执行过程总结了下,大致如下,请大家指正。在jsp页面中嵌入java代码,在服务器解析的时候是把 jsp全部转成java代码,并且产生一个servlet,
    servelt中将页面元素以out.print方法返回给前台
    这个过程中容器(tomcat)将servlet编译成class文件并且在jvm中执行
    变化过程:jsp->java(servlet)->class->html
    我们接收到的页面已经是纯html文件了,而struts标签<s:property/>只能取得值栈和action stack中的参数。
    不知道对不对,请大家指正
      

  11.   


    LZ正解。其实想看struts标签能得到哪些值,直接用<s:debug>标签就能全部看到