简介
Jsp环境部署
Tomcat目录结构
SHOP++网上商城系统安装
---------------
一、简介
JSP
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。简单地说,jsp就是可能包含了java程序段的html文件(由jasper将嵌入在html文档的程序整个的转换为serlet代码),为了和普通的html区别,因此使用jsp后缀名。
Servlet
Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面。 它担当Web浏览器或其他HTTP客户程序发出请求,与HTTP服务器上的数据库或应用程序之间的中间层。
Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
在通信量大的服务器上,Java servlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而创建单独的程序,这意味着各个请求的系统开销比较小。
简单地说,servlet就是在服务器端被执行的java程序,它可以处理用户的请求,并对这些请求做出响应。Servlet编程是纯粹的java编程,而jsp则是html和java编程的中庸形式,所有的jsp文件都将被最终转换成java servlet来执行。
从jsp到java到class,jsp在首次被请求时是要花费一定的服务器资源的。但庆幸的是,这种情况只发生一次,一旦这个jsp文件被翻译并编译成对应的servlet,在下次请求来临时,将直接由servlet来处理,除非这个jsp已经被修改。
JSP和Servlet的最大区别在于,Servlet通常需要事先编译好,而JSP则并非必须事先编译。这意味着Servlet通常放置于私有资源区域,而JSP则通常以嵌入代码的方式包含于HTML页面文件中,这些HTML文件通常放置在公开资源区域。
Tomcat
Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。
Tomcat是稳固的独立的Web服务器与Servlet Container,不过,其Web服务器的功能则不如许多更健全的Web服务器完整,如Apache(Apache是一个强大的Web服务器 ,在处理静态页面、处理大量网络客户请求、支持服务的种类以及可配置方面都有优势,高速并且强壮,但是没有JSP/Servlet的解析能力)
将Apache和Tomcat整合起来可以看作是用Tomcat做Apache的jsp/servlet解析插件,不过Tomcat作为一个Web服务器,本身只具备了基本的Web服务功能。
二、Jsp环境部署
1、安装JDK(jdk-7u55-linux-x64)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@essun download] # ls
apache-tomcat-7.0.53. tar .gz jdk-7u55-linux-x64.rpm
[root@essun download] # rpm -ivh jdk-7u55-linux-x64.rpm
Preparing... ########################################### [100%]
1:jdk ########################################### [100%]
Unpacking JAR files...
rt.jar...
jsse.jar...
charsets.jar...
tools.jar...
localedata.jar...
jfxrt.jar...
[root@essun download] #
|
安装后存放的路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[root@essun java] # rpm -ql jdk | tail -10
/usr/java/jdk1 .7.0_55 /man/man1/schemagen .1
/usr/java/jdk1 .7.0_55 /man/man1/serialver .1
/usr/java/jdk1 .7.0_55 /man/man1/servertool .1
/usr/java/jdk1 .7.0_55 /man/man1/tnameserv .1
/usr/java/jdk1 .7.0_55 /man/man1/unpack200 .1
/usr/java/jdk1 .7.0_55 /man/man1/wsgen .1
/usr/java/jdk1 .7.0_55 /man/man1/wsimport .1
/usr/java/jdk1 .7.0_55 /man/man1/xjc .1
/usr/java/jdk1 .7.0_55 /release
/usr/java/jdk1 .7.0_55 /src .zip
[root@essun java] # cd /usr/java/^C
[root@essun java] # ll
total 4
lrwxrwxrwx 1 root root 16 May 11 09:45 default -> /usr/java/latest
drwxr-xr-x 8 root root 4096 May 11 09:44 jdk1.7.0_55
lrwxrwxrwx 1 root root 21 May 11 09:45 latest -> /usr/java/jdk1 .7.0_55
|
添加环境变量
1
2
3
4
5
6
7
8
|
[root@essun bin] # cat /etc/profile.d/java.sh
export JAVA_HOME= /usr/java/latest
export PATH=$JAVA_HOME /bin :$PATH
#注:$JAVA_HOME/bin一定要写在前面,否则将引用的是系统自带的java环境
[root@essun bin] # java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)
|
到此,jdk安装完成。
2、安装Tomcat (apache-tomcat-7.0.53.tar.gz)
1
2
3
4
|
[root@essun download] # tar xf apache-tomcat-7.0.53.tar.gz -C /
usr /local/
[root@essun local ] # ln -sv apache-tomcat-7.0.53 tomcat
`tomcat ' -> `apache-tomcat-7.0.53'
|
添加环境变量
1
2
3
4
5
6
|
[root@essun tomcat] # cat /etc/profile.d/tomcat.sh
export CATALINA_HOME= /usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME /bin
[root@essun tomcat] # . /etc/profile.d/tomcat.sh
[root@essun tomcat] # cat
cat catalina.sh catchsegv
|
启动服务
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@essun tomcat] # catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar
Tomcat started.
[root@essun tomcat] # ss -tnlp | grep 8080
LISTEN 0 100 :::8080 :::* users :(( "java" ,28017,42))
[root@essun tomcat] # ss -tnlp | grep java
LISTEN 0 100 :::8080 :::* users :(( "java" ,28017,42))
LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* users :(( "java" ,28017,45))
LISTEN 0 100 :::8009 :::* users :(( "java" ,28017,43))
|
添加启动脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 92 34
# description: The Apache Tomcat servlet/JSP container.
JAVA_HOME= /usr/java/latest
CATALINA_HOME= /usr/local/tomcat
export JAVA_HOME CATALINA_HOME
case $1 in
start)
$CATALINA_HOME /bin/catalina .sh start;;
stop)
$CATALINA_HOME /bin/catalina .sh stop;;
restart)
$CATALINA_HOME /bin/catalina .sh stop
sleep 2
$CATALINA_HOME /bin/catalina .sh start;;
esac
[root@essun tomcat] # chmod +x /etc/rc.d/init.d/tomcat
[root@essun tomcat] # chkconfig --add tomcat
[root@essun tomcat] # chkconfig tomcat on
|
访问测试
到此,tomcat安装完成
只要简单的设置就可以
修改/usr/local/tomcat/conf/tomcat-users.xml
1
2
3
4
5
6
|
< /tomcat-users >
|
重启tomcat
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@essun tomcat] # service tomcat restart
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar
Tomcat started.
|
web重新访问,在默认页面的右边有三个按钮
Server Status:服务器性能监控
Manager App :应用程序管理
输入登录密码
应用程序相关信息
应用程序部署
此外,context也可以让管理员基于每个app提供日志、appBase、DB连接等配置,这极大地增强配置的灵活性;
Tomcat7 deploy应用程序的方法:
Host Manager :布署虚拟主机
三、tomcat 目录结构
1
2
3
4
5
6
7
8
|
[root@essun tomcat] # ls -l | grep "^d"
drwxr-xr-x 2 root root 4096 May 11 11:36 bin
drwxr-xr-x 3 root root 4096 May 11 11:42 conf
drwxr-xr-x 2 root root 4096 May 11 11:36 lib
drwxr-xr-x 2 root root 4096 May 11 11:42 logs
drwxr-xr-x 2 root root 4096 May 11 11:36 temp
drwxr-xr-x 7 root root 4096 Mar 25 11:24 webapps
drwxr-xr-x 3 root root 4096 May 11 11:42 work
|
1、各目录的作用
bin ——Tomcat执行脚本目录
conf ——Tomcat配置文件
lib ——Tomcat运行需要的库文件(JARS)
logs ——Tomcat执行时的LOG文件
temp ——Tomcat临时文件存放目录
webapps ——Tomcat的主要Web发布目录(存放我们自JSP,SERVLET,CLASSES)
work ——Tomcat的工作目录,Tomcat将翻译JSP文件到的Java文件和class文件放在这
2、各目录中的文件
conf/
1
2
3
4
|
[root@essun tomcat] # ls conf
Catalina context.xml tomcat- users .xml
catalina.policy logging.properties web.xml
catalina.properties server.xml
|
最主要的配置文件有
server.xml Tomcat 的全局配置文件
web.xml 为不同的Tomcat配置的web应用设置缺省值的文件
tomcat-users.xml Tomcat用户认证的配置文件
context.xml 用于虚拟主机的配置及.war文件中的URL映射。使用context可以降低系统负载,因为,当某URL请求到达tomcat时,如果没有context,tomcat需要搜索server.xml或context.xml的配置以确定此URL,否则则需要搜索所有的war文件来查找用户的请求的资源
webapps
1
2
|
[root@essun webapps] # ls
docs examples host-manager manager ROOT
|
含Web应用的程序 (JSP、Servlet等)
work
1
2
3
|
[root@essun work] # cd Catalina/localhost/
[root@essun localhost] # ls
_ docs examples host-manager manager
|
由Tomcat自动生成,这是Tomcat放置它运行期间的中间文件(诸如编译的JSP文件)地方。 如果当Tomcat运行时,你删除了这个目录那么将不能够执行包含JSP的页面。
Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
type = "org.apache.catalina.UserDatabase"
description= "User database that can be updated and saved"
factory= "org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname= "conf/tomcat-users.xml" />
< /GlobalNamingResources >
connectionTimeout= "20000"
redirectPort= "8443" />
resourceName= "UserDatabase" />
< /Realm >
unpackWARs= "true" autoDeploy= "true" >
prefix= "localhost_access_log." suffix= ".txt"
pattern= "%h %l %u %t "%r" %s %b" />
< /Host >
< /Engine >
< /Service >
< /Server >
|
1
|
|
1
|
|
1
2
3
|
connectionTimeout= "20000"
redirectPort= "8443" />
|
1
2
3
|
maxThreads= "150" SSLEnabled= "true" scheme= "https" secure= "true"
clientAuth= "false" sslProtocol= "TLS" />
|
1
|
|
1
2
|
unpackWARs= "true" autoDeploy= "true" >
|
1
2
3
4
5
6
7
8
9
10
|
reloadable= "true" crossContext= "true" />
< /Host >
< /Host >
< /Engine >
|
1
2
3
|
/Alias >
< /Host >
|
Context : 一个 Context 对应于一个 web application,一个 web application 由一个或者多个Servlet 组成。每个 Context 在创建的时候都将根据配置文件conf/web.xml 和 webapps/${webapp.home}/WEB-INF/web.xml 载入 Servlet 类和创建映射表(mapping table)。当Context 获得请求时,将在自己的映射表中寻找相匹配的 Servlet 类。如果找到,则执行该类,获得结果并返回。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
docBase= "/web/threads/bbs"
reloadable= "true" >
< /Context >
|
Realm组件:一个Realm表示一个安全上下文,它是一个授权访问某个给定Context的用户列表和某用户所允许切换的角色相关定义的列表。因此,Realm就像是一个用户和组相关的数据库。定义Realm时惟一必须要提供的属性是classname,它是Realm的多个不同实现,用于表示此Realm认证的用户及角色等认证信息的存放位置。
下面是一个常见的使用UserDatabase的配置:
1
2
3
|
resourceName= "UserDatabase" />
< /Realm >
|
1
2
3
4
5
6
7
|
driverName= "org.gjt.mm.mysql.Driver"
connectionURL= "jdbc:mysql://localhost/authority"
connectionName= "test" connectionPassword= "test"
userTable= "users" userNameCol= "user_name"
userCredCol= "user_pass"
userRoleTable= "user_roles" roleNameCol= "role_name" />
|
1
2
3
|
prefix= "localhost_access_log." suffix= ".txt"
pattern= "%h %l %u %t "%r" %s %b" />
|
SemaphoreValve:用于控制Tomcat主机上任何容器上的并发访问数量;
JvmRouteBinderValve:在配置多个Tomcat为以Apache通过mod_proxy或mod_jk作为前端的集群架构中,当期望停止某节点时,可以通过此Valve将用记请求定向至备用节点;使用此Valve,必须使用JvmRouteSessionIDBinderListener;
1
2
3
4
|
allow= "127\.0\.0\.1" />
< /Context >
|
3) ResourceEnvRef;
1
2
3
4
5
6
7
8
9
10
|
type = "org.apache.catalina.UserDatabase"
description= "User database that can be updated and saved"
factory= "org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname= "conf/tomcat-users.xml" />
< /GlobalNamingResources >
|
4)BackupManager:用于Tomcat集群的会话管理器,与DeltaManager不同的是,某节点会话的改变只会同步给集群中的另一个而非所有节点。
Stores:PersistentManager必须包含一个Store元素以指定将会话数据存储至何处。这通常有两种实现方式:FileStore和JDBCStore
Resources:经常用于实现在Context中指定需要装载的但不在Tomcat本地磁盘上的应用资源,如Java类,HTML页面,JSP文件等。
Cluster:专用于配置Tomcat集群的元素,可用于Engine和Host容器中。在用于Engine容器中时,Engine中的所有Host均支持集群功能。在Cluster元素中,需要直接定义一个Manager元素,这个Manager元素有一个其值为org.apache.catalina.ha.session.DeltaManager或org.apache.catalina.ha.session.BackupManager的className属性。同时,Cluster中还需要分别定义一个Channel和ClusterListener元素。
tomcat-user.xml
Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现;
catalina.policy
Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力;
catalina.properties
Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制;Tomcat6在启动时会事先读取此文件的相关设置;
logging.properties:
Tomcat6通过自己内部实现的JAVA日志记录器来记录操作相关的日志,此文件即为日志记录器相关的配置信息,可以用来定义日志记录的组件级别以及日志文件的存在位置等;
context.xml
所有host的默认配置文件
四、SHOP++网上商城系统安装
1、环境部署
需要安装mysql
1
2
3
4
5
6
|
[root@essun conf]# yum install -y mysql-server mysql
root@essun shop]# service mysqld start
Initializing MySQL database: Installing MySQL system tables...
OK
Filling help tables...
OK
|
修改/usr/local/tomcat/conf/server.xml
1
2
3
|
connectionTimeout= "20000"
redirectPort= "8443" URIEncoding = "UTF-8" />
|
在站点目录(/usr/local/tomcat/webapps)中,新建一目录名为shop
1
|
[root@essun webapps] # mkdir shop
|
将下载后网上商城解压到此下目录
1
2
3
4
5
|
[root@essun shop] # pwd
/usr/local/tomcat/webapps/shop
[root@essun shop] # ls
admin changelog.txt index.html license.html product robots.txt sitemap WEB-INF
article favicon.ico install META-INF resources shopxx.txt upload
|
重启tomcat服务
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@essun shop] # service tomcat restart
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar
Tomcat started.
|
使用浏览器访问安装
环境检测
系统配置
系统安装
访问首页
子页测试
登录后台
后台管理
2、请求解析