http://www.cnblogs.com/oh3o/p/3224562.htmlphp
JSP: 全名为java server page,其根本是一个简化的Servlet。html
Servlet:Servlet是一种服务器端的Java应用程序,能够生成动态的Web页面。前端
JavaEE: JavaEE是J2EE新的名称。更名目的是让你们清楚J2EE只是Java企业应用。java
什么叫Jsp什么叫Java我真的很是让你们搞清楚!拜托别一上来就来一句:“前几天我搞了一个jsp的服务器,可难吭了。”。nginx
请你们分清楚什么是jsp什么是JavaEE! Java平台结构图:web
能够看到Java平台很是的庞大,而开发者的分化为:数据库
列举这两个图的缘由就是让你知道你看到的JSP不过是冰山一角,Jsp技术不过是Java初级开发人员必备的技术而已。apache
我今天要讲的就是Java树的最下面的两层了,也是初级工程师须要掌握的东西。编程
Web请求与相应简要的流程:后端
这是一个典型的就是客户端发送一个HTTP请求到服务器端,服务器端接收到请求并处理、响应的一个过程。
若是请求的是JSP,tomcat会把咱们的JSP编译成Servlet也就是一个普通的Java类。
其实JSP是Servlet的一种特殊形式,每一个JSP页面就是一个Servlet实例。Servlet又是一个普通的Java类它编译后就是一个普通的class文件。
这是一个普通的jsp脚本页面,由于我只用JSP来做为展现层仅仅作了简单的后端数据的页面展现:
上图能够很是清晰的看到一般的Jsp在项目中的地位并不如咱们大多数人所想的那么重要,甚至是无关紧要!由于咱们彻底能够用其余的东西来代替JSP做为前端展现层。 咱们来看一下这个页面编译成class后是什么样子:
你会发现你根本就看不懂这个class文件,由于这是字节码文件咱们根本就无法看。经过咱们的TOMCAT编译后他编程了一个Java类文件保存在Tomcat的work目录下。
文件目录:C:apache-tomcat-7.0.34workCatalinalocalhost你的项目名orgapachejsp
咱们只要打开index_jsp.java或者用jd-gui(Java反编译工具)打开就好了:
有人说这是Servlet吗?固然了。
继承HttpJspBase类,该类实际上是个HttpServlet的子类(jasper是tomcat的jsp engine)。
Jsp有着比Servlet更加优越的展示,不少初学PHP的人恐怕很难把视图和逻辑分开吧。好比以前在写PHPSQL注入测试的DEMO:
这代码看起来彷佛没有什么大的问题,也能正确的跑起来啊会有什么问题呢?缘由很简单这属于典型的展示和业务逻辑没有分开!这和写得烂的Servlet差很少!
说了这么多,不少人会以为Servlet很抽象。咱们仍是连建立一个Servlet吧:
建立成功后会自动的往web.xml里面写入:
其实就是一个映射的URL和一个处理映射的类的路径。而咱们自动生成的Java类精简后大体是这个样子:
请求响应输出内容:
熟悉PHP的大神们这里就不作解释了哦。了解了Jsp、Servlet咱们再来很是简单的看一下JavaWeb应用是怎样跑起来的。
加载web.xml的配置而后从配置里面获取各类信息为WEB应用启动准备。
快速定位数据库链接信息:
你们可能都很是关心数据库链接通常都配置在什么地方呢?
答案广泛是:C:apache-tomcat-7.0.34/webapps/wordpress/WEB-INF
下的***.xml
大多数的Spring框架都是配置在applicationContext里面的:
若是用到Hibernate框架那么:WebRootWEB-INFhibernate.cfg.xml
还有一种变态的配置方式就是直接卸载源代码里面:
Tomcat的数据源(其余的服务器大同小异):
目录:C:apache-tomcat-7.0.34confcontext.xml、server.xml
Resin数据源:
路径:D:installDev
esin-pro-4.0.28conf
esin.conf(resin 3.x是resin.xml)
其余的配置方式诸如读取如JEECMS读取的就是.properties配置文件,这种方式很是的常见:
0x01 Tomcat 基础
没错,这就是 TOM 猫。楼主跟这只猫打交道已经有好几年了,在 Java 应用当中 TOMCAT 运用的很是的普遍。
TOM 猫是一个 Web 应用服务器,也是 Servlet 容器。
Apache+Tomcat 作负载均衡:
如何快速的找到tomcat的安装路径:
一、不论是谁都应该明白的是无论apache仍是tomcat安装的路径都是随意的,因此找不到路径也是很是正常的。
二、在你的/etc/httpd/conf/httpd.conf里面会有一个LoadModule jk_module配置用于集成tomcat而后找到JkWorkersFile也就是tomcat的配置,找到.properties的路径。httpd里面也有可能会配置路径若是没有找到那就去apache2confextrahttpd-vhosts看下有没有配置域名绑定。
三、在第二步的时候找到了properties配置文件并读取,找到workers.tomcat_home也就是tomcat的配置路径了。
四、获得tomcat的路径你尚未成功,域名的具体配置是在conf下的server.xml。
五、读取server.xml不出意外你就能够找到网站的目录了。
六、若是第五步没有找到那么去webapps目录下ROOT瞧瞧默认不配置的话网站是部署在ROOT下的。
七、这一点是附加的科普知识爱听则听:数据库若是启用的tomcat有可能会采用tomcat的数据源配置未见为conf下的context.xml、server.xml。若是网站有域名绑定那么你能够试下ping域名而后带上端口访问。有可能会出现tomcat的登陆界面。tomcat默认是没有配置用户登陆的,因此当tomcat-users.xml下没有相关的用户配置就别在这里浪费时间了。
八、若是配置未找到那么到网站目录下的WEB-INF目录和其下的classes目录下找下对应的properties、xml(通常都是properties)。
九、若是你够蛋疼能够读取WEB.XML下的classess内的源码。
十、祝你好运。
普通的域名绑定:
直接添加到confhttpd.conf、confextrahttpd-vhosts.conf
在resin的conf下的resin.conf(resin3.x)和resin.xml(resin4.x)
Resin apache 负载均衡配置(从我之前的文章中节选的)
APACHE RESIN 作负载均衡,Resin 用来作 JAVAWEB 的支持,APACHE 用于处理静态
和 PHP 请求,RESIN 的速度飞快,RESIN 和 apache 的配合应该是很是完美的吧。
域名解析:
apache 的 httpd.conf:
须要修改:Include conf/extra/httpd-vhosts.conf(必定要把前面的#除掉,不然配置不起做用)
普通的域名绑定:
直接添加到 httpd.conf
<VirtualHost *:80> ServerAdmin admin@bjcyw.cn DocumentRoot E:/XXXX/XXX ServerName beijingcanyinwang.com ErrorLog E:/XXXX/XXX/bssn-error_log CustomLog E:/XXXX/XXX/bssn_log common </VirtualHost>
二级域名绑定,须要修改:
E:installapache2confextrahttpd-vhosts.conf
如:
<VirtualHost *:80> DocumentRoot E:/XXXXXXX/XXX ServerName bbs.beijingcanyinwang.com DirectoryIndex index.html index.php index.htm </VirtualHost>
Resin 的
请求处理:
<LocationMatch (.*?).jsp> SetHandler caucho-request </LocationMatch> <LocationMatch (.*?).action> SetHandler caucho-request </LocationMatch> <LocationMatch union-resin-stat-davic> SetHandler caucho-request </LocationMatch> <LocationMatch stat> SetHandler caucho-request </LocationMatch> <LocationMatch load> SetHandler caucho-request </LocationMatch> <LocationMatch vote> SetHandler caucho-request </LocationMatch>
APACHE 添加对 Resin 的支持:
LoadModule caucho_module "E:/install/resin-pro-3.1.12/win32/apache-2.2/mod_caucho. dll"
而后在末尾加上:
<IfModule mod_caucho.c> ResinConfigServer localhost 6800 CauchoStatus yes </IfModule>
只有就能让 apache 找到 resin 了。
PHP 支持问题:
resin 默认是支持 PHP 的测试 4.0.29 的时候就算你把 PHP 解析的 servlet 配置删了同样解析 PHP,无奈换成了 resin 3.1 在注释掉 PHP 的 servlet 配置就无压力了。
整合成功后:
做者:园长