JVM机制及后台开发问题解决

来源:互联网 发布:js 字符串分割 编辑:程序博客网 时间:2024/05/30 23:45

JVM机制及后台开发问题解决

目录:

1、下列示例代码用于探讨JVM机制:

2、JSP的form表单中name和id标签的区别:

3、Jdk从1.7更新为1.8后,对于一个项目无法部署进Tomcat中的解决方法:

4、在Tomcat下为图片目录配置虚拟路径:

5、CSS用到的不熟悉的标签:

6、在Tomcat中,WEB-INF目录下的JSP文件浏览器是无法直接访问的,只能通过重定向后才能够访问,因此放在WEB-INF下的jsp页面比较安全。如果需要直接访问,可以放在和WEB-INF同级目录下。

7、ModelMap和ModelAndView的区别:

8、JSTL:JSP标准标签库:

9、Maven的groupId和ArtifactId:

10、数据库中存储图片:

11、form表单中的role属性的作用:

12、c:forEach varStatus属性:

13、jar包和war包的区别:


1、下列示例代码用于探讨JVM机制:

答:(1)源程序:

public class LoopTest {

    public static void main(String[] args){

        int j = 1;

        j += (++j) + (j++);

        System.out.println( "In the end j is"  + j);

    }

}

(2)运行结果:

In the end j is 5

(3)用javap进行反编译查看Java代码的字节码

  public static void main(java.lang.String[]);

    Code:

       0: iconst_1  //int型常量值1进栈(j=1压入操作数栈)

       1: istore_1  //将栈顶int型数值存入局部变量表中的第二个局部变量(j=1从操作数栈中弹出存入局部变量表的1号位置,0号位置已被this占据)

       2: iload_1  //第二个int型局部变量进栈(从局部变量表中获得1号位置变量的值,将其压入操作数栈,此时局部变量表1号位置的值依旧存在)

       3: iinc  1, 1  //给局部变量表的1号位置的int值增加1(++j的j加上1变为2)

       6: iload_1  //++j的运行结果的变量的值2压入操作数栈

       7: iload_1  //开始执行j++,先将j的值2压入操作数栈(此时操作数栈有三个值,栈顶到栈底分别为2,2,1)

       8: iinc  1, 1  //局部变量表中j++,给j加上1变成2

      11: iadd  //操作数栈顶两个int型数值相加,并且结果入栈(2 + 2 =4)

      12: iadd  //操作数栈顶两个int型数值相加,并且结果入栈(4 + 1 =5,操作数栈就剩个5)

      13: istore_1  //将栈顶int型数值存入局部变量表中的第二个位置(也就是j += (++j) + (j++)的运行结果的值覆盖掉原来的j值存入局部变量表)

      14: getstatic  #2   // Field java/lang/System.out:Ljava/io/PrintStream;//获取指定类的静态域,并将其值压入栈顶

      17: new  #3   // class java/lang/StringBuilder//创建一个对象,并且其引用进栈

      20: dup  //复制栈顶数值,并且复制值进栈

      21: invokespecial  #4  // Method java/lang/StringBuilder."<init>":()V//调用超类构造方法、实例初始化方法、私有方法

      24: ldc  #5   // String In the end j is//将int、float或String型常量值从常量池中推送至栈顶

      26:invokevirtual  #6  //Method java/lang/StringBuilder.append:(Ljava/lang/String;) Ljava/lang/StringBuilder;  //调用实例方法append

      29: iload_1  //此时执行的是打印语句的j,将栈顶的j的值调入局部变量表

      30: invokevirtual  #7  // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;//调用实例方法append

      33: invokevirtual #8  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;//调用实例方法toString

      36: invokevirtual #9   // Method java/io/PrintStream.println:(Ljava/lang/String;)V//调用实例方法println

      39: return

}

 

2、JSP的form表单中name和id标签的区别:

答:浏览器会根据name来设定发送到服务器的request。因此如果用id,服务器是无法得到数据的。id用于唯一性元素样式定义。

 

3、Jdk从1.7更新为1.8后,对于一个项目无法部署进Tomcat中的解决方法:

答:①右键点击项目,选择properties;

②点击Project Facts;

③勾选Dynamic Web Module以及将java按钮那里将jdk版本改为1.8;

 

图3.1 操作截图

④点击“Apply”及“OK”。

 

4、在Tomcat下为图片目录配置虚拟路径:

答:①双击Servers下的Tomcat;

②选到Modules,在其中进行配置

 

图4.1 配置本地目录于Tomcat的虚拟路径


5、CSS用到的不熟悉的标签:

答:(1)box-shadow属性:参数h-shadow,v-shadow,blur,spread,color,inset

h-shadow :必需。水平阴影的位置。允许负值。

v-shadow :必需。垂直阴影的位置。允许负值。

blur:可选。模糊距离。

spread:可选。阴影的尺寸。

color:可选。阴影的颜色。

inset :可选。将外部阴影 (outset) 改为内部阴影。

(2)border-right属性:border-right-width,border-right-style,border-right-color

Eg. border-right:3px solid red

 

6、在Tomcat中,WEB-INF目录下的JSP文件浏览器是无法直接访问的,只能通过重定向后才能够访问,因此放在WEB-INF下的jsp页面比较安全。如果需要直接访问,可以放在和WEB-INF同级目录下。

 

7、ModelMap和ModelAndView的区别:

答:ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可。视图层通过request找到ModelMap中的数据。

ModelAndView:包括了ModelMap和视图对象的容器,包含模型也包括视图,设置跳转地址,也可以用于传递控制方法处理数据到结果页面。

 

8、JSTL:JSP标准标签库:

答:核心标签:

(1)引用核心标签库的语法:<% @ taglib prefix=”c” url=”http://java.sun.com/jsp/jstl/core” %>

(2)标签:

(a)<c:out>:用于在JSP中显示数据,就像<%= ... >

属性:value:要输出的内容,default:输出的默认值,escapeXml:是否输出XML特殊字符

(b)<c:set>:用于设置变量值和对象属性。

(c)<c:remove>:用于移除一个变量。

(d)<c:catch>:用于处理产生错误的异常情况,并且将错误信息储存起来。

(e)<c:if>:用于判断,表达式内的值为true则执行

(f)<c:choose>:与switch功能相同,本身只当做<c:when>和<c:otherwise>的父标签

(g)<c:when>:判断条件是否成立

属性:test:条件

(h)<c:otherwise>:当<c:when>标签判断为false时候执行

(i)<c:import>:检索一个绝对或相对 URL,然后将其内容暴露给页面

(j)<c:foreach>:基础迭代标签,接受多种集合类型

属性:

items:要被循环的信息,

begin:开始的元素,不填则默认为0(第一个元素)开始,

end:最后一个元素,

step:每一次迭代的步长,不填则默认为1,

var:代表当前条目的变量名称,

varStatus:代表循环状态的变量名称

(k)<c:forTokens>:根据指定的分隔符来分隔内容并迭代输出

(l)<c:param>:用来给包含或重定向的页面传递参数

(m)<c:redirect>:重新定向到一个新的URL

(n)<c:url>:将URL格式化为一个字符串,然后存储在一个变量中。

 

9、Maven的groupId和ArtifactId:

答:(1)groupId是项目组织的唯一标识符,实际对应Java的包的结构,是main目录里的Java目录结构。

(2)ArtifactId是项目的唯一标识符,实际对应项目的名称,就是项目根目录的名称。

 

10、数据库中存储图片:

答:用varchar型,用于存储图片路径,一般不直接存储图片

 

11、form表单中的role属性的作用:

答:给有阅读障碍的人设置的属性,可以用读屏软件来解析。

 

12、c:forEach varStatus属性:

答:current: 当前这次迭代的(集合中的)项
index  : 当前这次迭代从 0 开始的迭代索引
count  : 当前这次迭代从 1 开始的迭代计数
first  : 用来表明当前这轮迭代是否为第一次迭代的标志
last   : 用来表明当前这轮迭代是否为最后一次迭代的标志
begin  : 返回begin属性值
end: 返回end属性值

step  : 返回step属性值

 

13、jar包和war包的区别:

答:(1)jar包是开发时要引用通用类,打包便于存放管理。

(2)war包是做好一个web应用后,通常是网站,打成包部署到容器中。对于Tomcat来说,将war文件包放置在它的\webapps\目录下,启动Tomcat,这个包可以自动进行解压,也就是web目录,相当于发布了。


5 0
原创粉丝点击