在无IDE工具的情况下,编写,配置,管理Web 程序,包含以下方面:
1、 无IDE工具手动编写Web程序,组织目录结构,要对掌握Web目录结构。
2、 使用JDK的jar命令生成war包,在Tomcat中部署Web程序使用此包
3、 修改配置文件,包括项目的web.xml,Tomcat的配置文件,如修改端口号。
4、 使用Tomcal后台管理Web程序
5、 配置Web程序安全项。
一、手动编写Web程序
1、构建Web目录结构:
MyWeb目录为Web项目的根目录,一般为项目名字
META-INF存放项目描述信息
WEB-INF目录不对外公开,存放项目使用的资源
classes存放java的class文件
lib存放项目使用的.jar包
web.xml为项目的配置文件。
2、编写index.jsp文件。
jsp文件中第一行应写入指令语句。
<%@ page import="java.util.Date" contentType="text/html;charset=utf-8"%> <html> <body> <%=new Date() %><br /> </body> </html> |
3、web.xml可以拷贝已有项目的文件,并做修改。
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> |
二、生成war包并在Tomcat中运行
1、使用JDK的jar首先确定系统环境变量正确。
命令:
打包:jar cvf MyWeb.war *.*
要先进入MyWeb目录,完成后在META-INF中自动生成系统文件。
查看包内容:jar tvf MyWeb.war
解压缩:jar xvf MyWeb.war
此命令还可以打ear 和 jar 包。
2、将生成的.war包拷贝到Tomcat的webapps目录中
3、然后在Tomcat的bin目录中运行shutdown.bat文件启动Tomcat,Tomcat自动在webapps目录中解压.war包,并加载项目。
Tomcat启动后提示信息:
http-8080表示在8080端口,使用http协议启动。
in 1422 ms表示启动时间,出现以上提示表示启动已成功。
注意:在Tomcat运行时,此命令提示符窗口不可关闭。
4、打开浏览器,输入http://localhost:8080/MyWeb/,看到正确结果则运行成功。
注:Tomcat 的目录结构和使用
Tomcat有很多版本:5,5.5,6等等,如apache-tomcat-5.5.25
解压apache-tomcat-5.5.25.zip后,在其目录中包含多个文件夹
bin:存放Tomcat程序,常用的有:启动Startup.bat,关闭Shutdown.bat,
在Linux和UNIX下使用Startup.sh和Shutdown.sh。
conf:存放Tomcat配置文件。
webapps存放要运行的Web项目。
work:Tomcat运行时的工作空间,翻译JSP生成的.java文件和编译后的.class文件等等存放在此。
三、修改端口号
Tomcat默认端口号为:8080,可以修改此端口号,如修改为80则在浏览器中无须输入端口号。
打开conf目录下的server.xml文件,在其中搜索8080(现用端口),
找到:<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" maxHttpHeaderSize="8192"
将8080修改为80
重新启动Tomcat(先运行shutdown.bat关闭,再运行Startup.bat启动),即将使用的端口号修改。
可能的错误:
表示端口已经被占用,如安装了IIS,关闭IIS中的服务,再重新启动Tomcat。
修改后再使用http://localhost:8080/MyWeb/则无法显示网页,将:8080去掉或改为:80即可正常访问。
四、使用Tomcal后台管理Web程序
在启动Tomcat服务后,在浏览器中输入:http://localhost/,即可进入Tomcat后台管理程序。
管理运行项目的有admin和Tomcat Manager两种,但在Tomcat 5.0后未安装admin,须要另外安装,所以只有Tomcat Manager一种:
点击链接进入
出现提示输入用户名和密码
点击确定进入,出错,表示还没有配置用户名和密码,或不正确
也可能不是以上提示
打开conf/ tomcat-users.xml,在<tomcat-users></tomcat-users>中输入用户名和密码,可复制错误提示的代码。
<role rolename="manager"/>
<user username="wyq" password="wyq" roles="manager"/>
表示:role为角色,用户名:wyq,密码:wyq,登录到manager,重新进入,输入用户名和密码,即可进入后台管理系统
Tomcat 5.5可能无法显示以上提示。
在后台中可以看到已经启动的Web程序,如MyWeb
1、可以对Web程序进行启动(Start),停止(Stop),重载(Reload),删除(Undeloy)的操作。如果在目录中手动删除一个项目,可能会无法完全删除,因为有许多自动生成的删除不完全。而使用此处提供的删除功能,可以彻底删除。
在运行的程序中可以看到Manager本身也是一个Web程序在Tomcat中运行
2、通过后台加载一个Web程序
点击“浏览…”,打开要运行项目的war包,点击Deploy就可以把Web程序加装载到Tomcat中。加载后在就可以看到加载的项目出现在正在运行的程序列表中。
五、配置Web程序安全项
方法一:web.xml文件中安全性的设置
要是为某Web应用设置访问权限,或是为Web应用的某此资源设置权限。
第一步:
在自己的Web应用的WEB-INF/web.xml配置文件的<web-app></web-app>标记中加入一段配置代码:
<!-- Define a Security Constraint on this Application 安全约束 web-resource-name为安全约束的名字,任意取名 url-pattern为访问资源的权限,/*表示所有资源 role-name表示角色(身份)名,在tomcat的conf/tomcat-users.xml文件中使用此角色名,并为其设置用户名和密码. 如<user username="wyq" password="wyq" roles="myrole"/>并且这个名字最好和下边的<security-role>中的<role-name>设置为相同--> <security-constraint> <web-resource-collection> <web-resource-name>MyJSP</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <!-- NOTE: This role is not present in the default users file --> <role-name>myrole</role-name> </auth-constraint> </security-constraint> <!-- Define the Login Configuration for this Application 登录配置: auth-method为登录方式,有五种,BASIC为最基本,普通的一种。 realm-name为登录框上显示的提示 --> <login-config> <auth-method>BASIC</auth-method> <realm-name>MyWebApp</realm-name> </login-config>
<!-- Security roles referenced by this web application --> <security-role> <description> The role that is required to log in to the Manager Application </description> <role-name>myrole</role-name> </security-role> |
关于以上代码的解释:
1、<login-config></login-config>中的内容
auth-method为登录方式,有五种,BASIC为最基本,普通的一种。
realm-name为登录框上显示的提示
2、<security-constraint>中的内容
web-resource-name:为安全约束的名字,任意取名。
url-pattern为访问资源的权限,/*表示所有资源
role-name表示角色(身份)名,在tomcat的conf/tomcat-users.xml文件中使用此角色名,并为其设置用户名和密码。 如<user username="wyq" password="wyq" roles="myrole"/>,
并且这个名字最好和下边的<security-role>中的<role-name>设置为相同-->。
在自己的Web应用中设置了以上配置,只是说明访问这个Web应用需要身份认证,但还没有用户名和密码,所以无法登录。要设置用户名和密码须要在Tomcat中配置,配置方式和前边讲的相同。
在conf/ tomcat-users.xml文件中增加<user username="wyq" password="wyq" roles="myrole"/>其中roles为上边指定的角色(身份)。
注意:如果在conf/ tomcat-users.xml中设置了两行用户名相同的用户,在Tomcat重新启动后,将会只保留最后一行。所以如果要为相同的用户名指定不同的角色,可以把角色写在同一个roles中,如:<user username="wyq" password="wyq" roles="manager,myrole"/>。
方法二:使用Form表单验证
在方法一中,访问受保护的资源将会弹出一个对话框,要求输入用户名和密码(conf/ tomcat-users.xml中配置)。
使用Form表单验证需要做的更改本项目WEB-INF/web.xml文件,Tomcat中的conf/tomcat-users.xml文件和增加两个页面。
1、WEB-INF/web.xml文件中的修改,在<web-app></web-app>中添加配置
<security-constraint> <、security-constraint> 安全配置,
<url-pattern>/*</url-pattern>在其中设定要保护的资源
<role-name>MyRole</role-name>设定访问资源使用的角色名。
<login-config></login-config>登录配置,
<auth-method>FORM</auth-method>在其中设定验证方法为Form。
<form-login-page>/login.jsp</form-login-page>登录页面
<form-error-page>/loginError.jsp</form-error-page>登录失败的页面
<security-constraint> <web-resource-collection> <web-resource-name>MyResources</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <!-- NOTE: This role is not present in the default users file --> <role-name>MyRole</role-name> </auth-constraint> </security-constraint>
<!-- Define the Login Configuration for this Application --> <login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/loginError.jsp</form-error-page> </form-login-config> </login-config> |
2、在conf/ tomcat-users.xml中增加使用上边定义的角色访问资源的用户名和密码。
<user username="wyq" password="wyq" roles="MyRole"/> |
3、两个页面login.jsp和loginError.jsp页面(扩展名为html也可以),login.jsp中有登录表单,在访问受保护的页面时首先执行。loginError.jsp为登录失败时执行。
在login.jsp中设计一个表单,表单提交目的页面(action)固定,用户名和密码标记使用的用户名固定。
<body> <!-- j_security_check,j_username,j_password不能改成别的名字,大小写区分 --> <form method="POST" action="j_security_check" > User Name:<input type="text" name="j_username"><br/> Password: <input type="password" name="j_password"><br/> <input type="submit" value="Login!!"> </form> </body> |
在loginError.jsp中写入当登录失败后显示的提示。
六、Tomcat 的启动设置
Tomcat无法启动可能是环境变量未设置,包括JAVA_HOME和CATALINA_HOME。
错误提示:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
The CATALINA_HOME environment variable is not defined co
This environment variable is needed to run this program
以上提示表示环境变量设置不正确,重新设置环境变量,并且应该使用命令方式设置,才能保证正确。
命令方式:
查看环境变量内容:set JAVA_HOME
设置环境变量:
set JAVA_HOME=D:\Eclipse\JDK
set CATALINA_HOME=D:\Eclipse\apache-tomcat-6.0.14
注意:
JAVA_HOME设置为JDK安装根目录,无须设置到bin目录
CATALINA_HOME设置为tomcat根目录。
也可以使用对话框设置,但不要设置成.;D:\Eclipse\JDK;
七:使用Tomcat设置虚拟目录
为什么需要设置虚拟目录?
部署JavaWeb应用,只需要把你WAR包或目录结构拷贝到%Tomcat_Home%/webapps下就可以了。
但随着网站的增长,你需要把你的JavaWeb应用放置到Tomcat外部,这时候就需要设置Tomcat虚拟目录,
让你的应用脱离Tomcat的安装目录。
设置方法
1.找到%Tomcat_Home%/conf/server.xml文件。
2.按ctrl+F查找<Host
3.在<Host></Host>之间加入:
<Context path="/lxt008" docBase="d:\TomcatFormSecurityDemo" reloadable="true" debug="0"></Context>
path: Context URL,通过http://localhost:8080/lxt008访问该应用。
docBase: 应用的物理绝对路径,默认是%Tomcat_Home%/webapps
reloadable="true" :修改JSP/Servlet无须重启Tomcat,Tomcat可自动重载。
通常开发时设为真,但较消耗资源,所以应用时设置为假
debug="0" : 设置输出的调试信息级别。起小输出信息起多,通常开发时小此,应用时大些
4.把符合JavaWeb规范的应用TomcatFormSecurityDemo拷贝到d盘下。
5.输入http://localhost:8080/lxt008测试!