简要说明什么是Java Web容器?
答案: Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问。开发Java Web应用所采用的服务器主要是与JSP/Servlet兼容的Web服务器,我们把遵守J2EE规范中的WEB APPLICATION 标准的WEB服务器就叫做java WEB容器,它给JSP/Servlet提供运行环境,比较常用的有Tomcat、JBoss、WebSphere 和 WebLogic 等。
Java Web容器是使用一类叫做什么的东西来处理并响应某一个http请求的
答:使用servlet处理用户发送的请求并且做出响应,用户发送的请求到达servlet,servlet容器会针对这个请求,创建特定的HttpServletRequest和HttpServletResponse对象,然后调用servlet中的service方法。Service方法从HttpServletRequest中获得用户请求的信息,处理这个请求,并通过HttpServletResponse对象,向客户返回响应信息。
某一个具体jsp与“Servlet”是什么关系?
答:JSP是servlet技术的扩展,本质上就是servlet的简易形式。Jsp编译后就是servlet。Servlet和jsp的不同点就在于,servlet的应用逻辑在java文件中,并完全从展示层的html中分割出来。Jsp侧重于视图。Servlet中要是控制逻辑。
当多个用户同时向一个Java Web应用请求同一个消息时,真实的处理过程可能以下哪种说法? (A)
A.给每个用户分配一个线程,所有用户共用一个“S”实例去处理消息
B.给每个用户分配一个线程,每个用户分配一个“S”实例去处理消息
C.所有用户共用一个线程,所有用户共用一个“S”实例去处理消息
D.所有用户共用一个线程,每个用户一个“S”实例去处理消息
WEB-INF/web.xml内有如下配置:
请说明各标签的作用,叙述该配置的作用。
答:是WEB容器的过滤器,在请求和响应对象在Servlet处理之前和之后,可以通过此过滤器对这两个对象进行处理。
定义过滤器的名字。
定义过滤器处理类。
定义过滤器匹配模式,里面的对应filter的名字。
定义匹配模式通配符。
Listener的作用是什么?
Listener就是监听器,它们能帮助开发者监听web中的特定事件,比如ServletContext,HttpSession,ServletRequest的创建和销毁;变量的创建、销毁和修改等。可以在某些动作前后增加处理,实现监控
描述cookie、session、application的区别是什么?
Cookie:
cookie存放在客户端中,它的有效期时间以客户端的时间为标准的。这个时间可以自己手动去设置的。
如果没有设置Cookies对象的有效期,则Cookies对象只存在于客户端的内存。当浏览器关闭时,Cookies就会失效。
Session:
session是用在服务器上的技术,利用这个技术,服务器可以把与会话相关的数据写到一个代表会话的 session对象中,用来用户对的请的信息的,而且可以创建多个session会话。
session有效期也是可以自己设置,而默认情况下关闭浏览器session就失效。
Application:
多个用户共享的应用级别的作用域,在服务器端,相比前两者,这个存在时间是最长的,只有当关闭服务器的时候它才死亡!
如何调整jboss启动时java VM的参数设置?请写出需要修改的文件,列出修改点,并说明-Xms、-Xmx、-XX:PermSize、-XX:MaxPermSize参数的含义.
答:可以修改$JBOSS_HOME/bin下的run.sh,但更多的时候是修改run.conf里面单独设置java VM的参数然后再run.sh中引用,修改JAVA_HOME、JAVA_OPTS等变量。
-Xms:JVM初始分配的堆内存;
-Xmx:JVM最大允许分配的堆内存,按需分配;
-XX:PermSize:JVM初始分配的非堆内存;
-XX:MaxPermSize:JVM最大允许分配的非堆内存,按需分配。
说明tomcat\conf\context.xml文件,配置项中maxIdle,testOnBorrow,timeBetweenEvictionRunsMillis,minEvictableIdleTimeMillis分别表示什么含义?
答:maxIdle:最大空闲连接数。
testOnBorrow:指明在池中租借对象时是否进行校验,如果对象校验失败,则对象从池中释放出来。让后试着租借另一个。
timeBetweenEvictionRunMisllis:空闲对象驱逐线程运行时的毫秒数。如果设置为正数则驱逐,如果是非正数时,则不运行驱逐对象运行线程。
minEvictableIdleTimeMillis:连接池中的空闲连接多少时间被收回。
Jsp如何调用另一个jsp中的方法,比如现在需要调用test.jsp中的test()方法?
答:使用 %@includefile 标签 引入该jsp 然后调用 test()方法.
Jsp如何调用某个jar包中的方法,比如com.breakyizhan.Test.java?
答:
请列举一种开启Tomcat热部署的方法?
答:在%TOMCAT_HOME%/conf/server.xml中的内部添加标签:
解释什么是sessionlock,以及它的作用。
答:sessionlock表示会话锁,给会话加锁或者是解锁,给session上锁之后,session里面的属性不可在修改,直到解锁。
作用:若请求配置了sessionlock的forward,就表示请求会检查该session是否会被加锁。若session被加锁则直接跳转到sessionlocked的配置。如果没有加锁,就会给session加锁,一直到会话请求结束为止,才会释放此锁。
说明tomcat\conf\server.xml文件,配置项中maxThreads,minSpareThreads分别表示什么含义?
答:
maxThreads:指最大的线程数
minSpareThreads:指最大的线程空闲数
使用jar命令打包本地一个java web应用,并上传至服务器应用部署目录,然后解压到部署目录。
jar -cvf myhome.war */ //打包本地java web应用
-c 创建一个压缩包
-v 显示详细的过程
-f 指定打包的文件名
myhome.war 打包的文件名
*/ 打包当前路径的所有文件
scp /usr/local/myDemo.war root@192.168.0.1:/usr/local/tomcat/webapps //上传至服务器应用部署目录
/usr/local/myDemo.war 指定本地路径文件
root@192.168.0.1:/usr/local/tomcat/webapps root是用户名,192.168.178.128是远程服务的IP地址,/usr/local/tomcat/webapps 指定的部署目录
jar -xvf /usr/local/tomcat/webapps/myDemo.war /usr/local/tomcat/webapps/ //解压到部署目录
-x 解压
-v 显示详细的过程
-f 指定打包的文件名
/usr/local/tomcat/webapps/myDemo.war 待解压的war包
/usr/local/tomcat/webapps/ 指定路径
日常工作中,习惯使用ping来测试网络是否连通;使用telnet来测试服务器端的服务端口是否启动了监听,或者在确认服务器端的服务已经启动的状况下,测试某个服务器到另外一个服务器的服务端口是否已经开通了网络策略。请使用java写一段代码用于测试到某个IP的某个服务端口的网络连接是否正常。
可以通过socket.connect来判断某个服务端口的网络连接是否正常;
下面这个例子判断了
127.0.0.1:1080 (本地IBE)
127.0.0.1:1081
具体代码截图和运行结果如下:
具体代码如下:
package test;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
public class pingIP {
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean connected=isHostConnectable("127.0.0.1", 1080);
boolean notconnected=isHostConnectable("127.0.0.1", 1081);
System.out.println(connected);
System.out.println(notconnected);
}
public static boolean isHostConnectable(String host, int port) {
Socket socket = new Socket();
try {
socket.connect(new InetSocketAddress(host, port));
} catch (IOException e) {
e.printStackTrace();
return false;
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return true;
}
}