1、知识点
2、Tomcat部署
2.1、什么是Tomcat
2.2、Tomcat安装
我们此次使用的Tomcat为:apache-tomcat-7.0.30。Tomcat的部署可以分为安装版的安装,或手工安装(部署)。安装版在安装过程中会提示你指定JDK目录(即JAVA_HOME)之类的,而手工部署则要自己到系统环境变量中设置。如果我们重装系统后,又想保留之前Tomcat服务文件的配置,则可以手工部署以重用重装系统前的Tomcat。
u 安装版的安装(过程略)
u 手工安装
1) 配置JAVA_HOME,即java安装路径,如:D:\ProgramFiles\java\jdk1.7.0_03
2) 配置JRE_HOME,即java JRE的路径,如:D:\Program Files\java\jdk1.7.0_03\jre
3) 配置CATALINA_HOME,如:F:\Program Files\apache-tomcat-7.0.30
i. 此环境变量值为tomcat的解压目录
ii. 注意后面不用多加“\”或者“;”
2.3、启动Tomcat
tomcat主目录中的文件夹有以下几个:
● bin:所有的可执行文件;
● common:里面存放需要的*.jar包;
● conf:配置文件,服务器的修改都要从此目录中进行;
● logs:日志文件、如果服务器出现错误,会自动记录;
● server:服务器管理程序;
● webapps:所有的可执行的WEB项目都会放在此目录之中;
● work:此文件夹中保存了所有的临时文件,当开发中发现一个程序无论怎样调整都无法正确执行的时候,就可以考虑将此文件夹中的全部内容清空。
可以发现,本次测试环境中并没有server和common文件夹,可能是由于版本或者安装方式(本次安装方式为手工安装)不同而造成的。
启动Tomcat,打开bin目录下的startup.bat程序即可,如果不想每次都进入此路径打开startup.bat,则可以配置系统的path环境变量,添加此bin路径即可,如下:
成功启动Tomcat后信息如下:
其中高亮的是端口号,可以用于在浏览器中访问Tomcat服务器。
启动浏览器,输入地址 http://localhost:8080
如果现在访问的是其他机器的服务器,则只要输入:http://IP地址:地址端口号。
2.4、配置Tomcat服务器
用记事本(或其他编辑器)打开%CATALINA_HOME%\conf\server.xml,如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> |
如果端口号修改为默认端口号80,则在浏览器地址栏不需要输入端口号。
2.5、配置虚拟目录
Tomcat中配置虚拟目录是必须的,因为所有的开发是在其他目录中完成的,当然,如果想要配置需要目录,则首先也有严格的要求,配置的虚拟目录必须有以下的目录结构:
WEB ROOT → 一般情况下虚拟目录要配置到此文件夹之中
● WEB-INF
● web.xml:配置文件,有格式要求
但是,此时不知道文件的格式是什么,那么可以直接从%CATALINA_HOME%\webapps\ROOT\WEB-INF目录下找到文件web.xml。
我们现在F盘创建以下的一个目录结构,然后把web.xml文件复制进去:
此时,还需要配置server.xml文件,在</Host>上面添加代码:
<Context path="/demo" docBase="F:\WEBdemo" /> </Host> |
其中Context表示上下文,表示配置一个新的上下文;
● path:表示浏览器中的输入路径,必须有“/”;
● docBase:表示此路径对应着硬盘上的绝对路径。
此后,就可以直接通过:“http://localhost:8080/demo”找到硬盘上的F:\WEBdomo文件夹中的内容了。
因为Tomcat中默认将目录的列表功能关闭,所以配置完之后,还需要配置%CATALINA_HOME%\conf目录下的web.xml文件。但需要注意的是,在项目发布的时候,最好将列表功能取消掉,目的是为了安全。
配置web.xml文件,将listings下的false改为true:
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> |
重启服务器,再次输入路径:
2.6、第一个程序
所有的JSP程序就是在HTML之中加入了java代码,我们在刚才创建的工作目录“F:\WEBdemo”下创建文件hello.jsp,编写如下代码:
hello.jsp
<html> <head> <title>HELLO WORLD</title> </head> <body> <% out.print("hello world!!!"); // 向浏览器中输出 %> </body> </html> |
运行程序,在浏览器中输入“http:/localhost:8080/demo”后,此时可以看到hello.jsp文件:
点击即可打开,我们也同时打开源码:
2.7、Tomcat的执行流程
第一次执行:
1、客户端通过电脑连接服务器,因为请求是动态的,所以所有的请求交给WEB容器中处理;
2、在容器中找到需要执行的*.jsp文件;
3、之后*.jsp文件通过转换变为*.java文件;
4、经过编译之后,形成*.class文件;
5、最终服务器需要执行形成*.class文件
第二次执行:
1、因为已经存在了“*.class”文件,所以不再需要转换和编译的过程
修改后执行:
1、源文件已经被修改过了,所以需要重新转换,重新编译
在Tomcat中存在一个work的文件夹,此文件夹中就保存了所有的临时文件。
但是,在这里out.println()的换行方法会被HTML忽略掉,所以要使用HTML语句中的<BR>来进行换行:
<html> <head> <title>HELLO WORLD</title> </head> <body> <% out.println("1 line "); // out.println()换行被忽略 out.print("2 line<BR>"); out.print("3 line"); %>
</body> </html> |
1 line 2 line |
3、MyEclipse
3.1、建立WEB项目
MyEclipse本身会自动帮助开发者建立好WEB项目,之后此项目可以通过MyEclipse自动发布,或者像之前那样进行手工的部署(配置Context)。
建立hello.jsp文件:
3.2、运行WEB项目
运行WEB项目,可以像最早那样,通过虚拟目录的方式指定。
server.xml:
<Context path="/test" docBase="D:\eclipse\MyEclipse 10\ME_first\WebRoot" /> |
此种发布,称为手工发布。此种方式为推荐方式。
在MyEclipse中创建JSP项目时,会自动创建一个首页index.jsp,如果此文件存在,则在地址栏中输入http://localhost:8080/test/时,会直接跳到首页index.jsp的内容页面。可以将其删除以恢复至目录的页面,也可以直接输入决定路径打开jsp项目。
第二种是可以直接MyEclipse自带的功能,进行自动发布。如果想要进行自动发布,则首先应该在MyEclipse中配置好服务器。
以上表示在MyEclipse中可以使用Tomcat,但是如果要想让Tomcat在MyEclipse中可以直接启动则必须配置必须的JDK。
JDK → ADD:
注意此时选择的JRE_home路径只要选择到JDK的主目录下就行了。
为MyEclipse添加Tomcat服务器:
此时,项目直接部署到Tomcat之中,部署到了Tomcat的安装目录的webapps文件夹之中。所谓自动发布,就是直接将所有的WEB项目拷贝到webapps下,直接访问文件夹的名称即可,之后就可以直接在MyEclipse中启动服务器了。(http://localhost:8080/ME_first/)
其中,ME_first表示的是刚才建立的项目名。我们到%CATALINA_HOME%\webapps目录下发现名为ME_first的整个项目已经被复制过来了。
3.3、第一个交互程序
如果想要实现程序的交互,则肯定要依赖于表单,所以此时演示一个最简单的交互程序,用户输入什么内容,服务器显示什么内容。
input.html:
<FORM METHOD="post" ACTION="input.jsp"> 输入信息:<INPUT TYPE="text" NAME="info"> <INPUT TYPE="submit" value="显示"> </FORM> |
表单提交给input.jsp,input.jsp接收并显示内容。方法:request.getParameter(“参数名”),此方法返回的内容是String类型。
input.jsp:
String str = request.getParameter("info"); //接收表单参数 out.println("<h1>"+str+"</h1>"); %> |
点击“显示”,显示如下:
前面的表单输入哪些内容,后面的JSP程序就显示哪些内容。以上的程序就属于一个标准的交互式程序。
但是,必须注意的是,以上的所有程序必须在服务器开着,而且通过浏览器访问的时候才起作用。
当然,此时为了保证前台页面输入的内容不为空,也可以进行一些JavaScript判断,使用onSubmit事件,同时使用正则进行验证。
input.html:
<script language="javaScript"> function validate(f){ if(!(/\w+/.test(f.info.value))){ alert("输入的内容不能为空!"); f.info.focus(); return false; } return true; } </script> <FORM METHOD="POST" ACTION="input.jsp" onSubmit="return validate(this)"> 输入信息:<INPUT TYPE="text" NAME="info"> <INPUT TYPE="submit" value="显示"> </FORM> |
上面的实验不成功!暂不知道原因??
答:在MyEclipse 10中高亮部分不能写成"return=validate(this)"而应该写成"validate(this)",这是10版本中的一个漏洞?
//或:windows→myeclipse→validation→javascript validator forJs files,把Bulid勾去掉
JavaScript程序就是在客户端执行,所有的页面都必须通过浏览器打开。
4、JBOSS部署
环境:jboss-4.2.3.GA
4.1、修改默认端口
路径:%JBOSS_HOME%\server\default\deploy\jboss-web.deployer\
注意,在配置JBOSS_HOME环境变量的时候,路径后面不要使用“;”,否则不能在地址栏中直接输入“%JBOSS_HOME%”。其他环境变量也是一样的道理。
修改里面的server.xml文件:
…… <Connector port="9090" address="${jboss.bind.address}" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" protocol="HTTP/1.1" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" /> |
4.2、使用默认路径打开JSP页面
JBOSS和Tomcat一样,默认是没有打开目录功能。在不打开目录功能的情况下,也可以通过指定路径来打开JSP页面。
① 在“%JBOSS_HOME%\server\default\deploy\”目录下创建一个文件夹,文件夹的格式必须是:文件夹名 + .war。如:newDir.war。
② 在此文件夹下面创建*.JSP文件,如Time.jsp:
<%@ page language="java" contentType="text/html;charset=GBK"%> <%@page import="java.util.*"%> <% Date dnow = new Date(); int dhours = dnow.getHours(); int dminutes = dnow.getMinutes(); int dseconds = dnow.getSeconds(); out.print("服务器时间:" + dhours + ":" + dminutes + ":" + dseconds); %> <SCRIPT LANGUAGE="JavaScript"> var dnow = new Date(); dhours = dnow.getHours(); dminutes = dnow.getMinutes(); dseconds = dnow.getSeconds(); document.write("<br>浏览器时间:" + dhours + ":" + dminutes + ":" + dseconds); </SCRIPT> |
③ 到浏览器中输入:http://localhost:9090/newDir/Time.jsp,结果如下:
注意,9090是我们刚才修改后的端口号,newDir是我们创建的文件夹,但是切记不要添加后缀“.war”!
4.3、配置虚拟目录
① 到路径“%JBOSS_HOME%/server/default/deploy/jboss-web.deployer/conf/”下修改文件web.xml,将listings下的false修改为true:
<init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> |
② 创建目录,如:F:\WEBdemo,然后在其目录下再创建目录:WEB-INF,把%JBOSS_HOME%\server\default\deploy\jboss-web.deployer\ROOT.war\WEB-INF\目录下的web.xml文件复制到F:\WEBdemo\WEB-INF\目录下。
③ 将要添加的目录写进下面文件中:
%JBOSS_HOME%/server/default/deploy/jboss-web.deployer/server.xml:
<Context path="/app" docBase="f:\\WEBdemo\" debug="1" reloadable="true" override="true" crossContext="true"/>
</Host> |
注意上面的写法与Tomcat有不少差别,需要特别留意!到此,虚拟目录配置完成!
4.4、执行程序
通过以上的步骤后,我们已经把虚拟目录配置完毕,不要忘记需要重启JBOSS服务器。
在浏览器输入:http://localhost:9090/app/ ,结果如下:
之后点击相应文件名即可运行。