web服务器:PC机器安装一个具有web服务的软件,称之为web服务器
web服务软件(web容器)的作用:外部浏览器通过http访问本地的资源
Servlet没有main()方法。Servlet必须要受控于另一个Java应用,这个Java应用称为容器。Tomcat就是这样一个容器。如果web服务器应用得到一个指向servlet的请求(而不是其他请求,如请求一个普通的静态HTML),此时服务器不是把这个请求交给servlet本身,而是交给部署该servlet的容器,要由容器调用servlet的方法,如doPost()或doGet()。
------------------------------------服务器------------------------------------------------------------------
市面上常见的web应用服务软件:
WebLogic:BEA公司的产品。 收费。支持JavaEE规范。
WebSphere:IBM公司的产品。收费。支持JavaEE规范
JBoss: Redhat公司的产品。收费。支持JavaEE规范
Tomcat:开源组织Apache的产品。免费。支持部分的JavaEE规范。(servlet、jsp。jdbc,但不支持ejb, rmi)
tomcat使用的常见问题
1)闪退问题
原因:tomcat软件是java语言开发的。 tomcat软件启动时,会默认到系统的环境变量中查找一个名称叫JAVA_HOME的变量。这个变量的作用找到tomcat启动所需的jvm。
解决办法; 到环境变量中设置JAVA_HOME的变量
2)端口占用的错误
原因: tomcat启动所需的端口被其他软件占用了!
解决办法:
- 关闭其他软件程序,释放所需端口
- 修改tomcat软件所需端口,找到并修改%tomcat%/conf/server.xml文件中配置的端口
3)CATALINA环境变量问题
原因: tomcat软件启动后,除了查找JAVA_HOME后,还会再查找一个叫CATALINA_HOME变量,这个变量的作用是设置tomcat的根目录。
解决办法:建议不要设置CATALINA_HOME变量。检查如果有的话,清除掉!
---------------------------------如何共享资源-------------------------------------------------
webapps目录: tomcat共享目录。需要共享的本地资源放到此目录中(不能放入单独文件,要放入文件夹目录)
8080: tomcat默认的端口
3306:mysql数据库的端口
1521: orace数据库的端口
-----------------------------------Tomcat的目录结构--------------------------------------------------------
|-bin:存放tomcat的命令。
catalina.bat 命令:
startup.bat -> catalina.bat start
shutdown.bat - > catalina.bat stop
|- conf: 存放tomcat的配置信息。其中server.xml文件是核心的配置文件。
|-lib:支持tomcat软件运行的jar包。其中还有技术支持包,如servlet,jsp
|-logs:运行过程的日志信息
|-temp: 临时目录
|-webapps: 共享资源目录。web应用目录。(注意不能以单独的文件进行共享)
|-work: tomcat的运行目录。jsp运行时产生的临时文件就存放在这里
----------------------------------Web应用的目录结构------------------------------------------------------
|- Webname: web应用的根目录(放在webapps下)
|- 静态资源(html+css+js+image+vedio) 可被浏览器直接访问
|- WEB-INF : 固定写法。 不可被浏览器直接访问
|-classes: (可选)固定写法。存放class字节码文件
|-lib: (可选)固定写法。存放jar包文件。
|-web.xml: (可选)配置文件。配置访问路径与欢迎页/Servlet/filter等的映射关系|-META-INF: 信息包,用来配置应用程序、扩展程序、类加载器和服务
|-MANIFEST.MF 可指定main函数入口
注意:
- WEB-INF目录里面的资源不能通过浏览器直接访问
- 如果希望访问到WEB-INF里面的资源,就必须把资源配置到一个叫web.xml的文件中
- java应用项目在MANIFEST.MF中指定Main-Class: 后。就可以打包成一个jar,在控制台里输入java -jar test.jar即可以运行这个jar
eclipse中web应用改名后,还需要在properties->Web->context-root中改名
静态资源和动态资源的区别:
静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源。
动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变。
动态资源的开发技术(java)
java是通过 Servlet来做服务端的
Servlet :用java语言来编写动态资源的开发技术。
Servlet特点:
- 普通的java类,继承HttpServlet类,覆盖doXX方法
- Servlet类只能交给tomcat服务器运行(开发者自己不能运行!)
---------------------------------手动开发-------------------------------------------------------
Servlet手动编写步骤:
1)编写一个servlet程序,继承HttpServlet
2)找到编好的Servlet类的class字节码,然后把拷贝到tomcat服务器的一个web应用中的WEB-INF/classes目录下。
3)在当前web应用下的web.xml文件配置Servlet
<!-- 配置一个servlet程序 -->
<!-- 1.servlet的配置 -->
<servlet>
<!-- servlet的内部名称 (可以自定义)-->
<servlet-name>内部名称</servlet-name>
<!-- servlet类名(包名+简单类名)-->
<servlet-class>包名.类名</servlet-class>
</servlet>
<!-- 2.servlet的映射配置 -->
<servlet-mapping>
<!-- servlet的内部名称(和上面的名称保持一致)-->
<servlet-name>内部名称</servlet-name>
<!-- servlet的映射路径(访问servlet的名称)-->
<url-pattern>/名称</url-pattern>
</servlet-mapping>
4)启动tomcat服务器,运行访问servlet: http://url路径 / web应用目录 / 映射路径
-----------------------------------工具开发------------------------------------------------------
使用myeclipse工具编写步骤:
1)创建web project (javaweb工程)
2)在WebRoot下建立静态资源文件
3)在src下建立动态资源文件:右击->new -> Servlet( servlet的代码生成器),然后写pacakge 名、class名、mapping url名(/名称)
4)关联tomcat服务器:window-> Preferences - > MyEcplise -> servers -> Tomcat x.x (注意一定要enable)
5)部署web project应用。(就是拷贝web应用到tomcat的webapps目录下)
6)启动tomcat服务器
7)访问servlet