概述
不论是我们一开始做的java桌面程序、控制台程序以及socket gui界面程序(这个我还没学),都是服从Javase规范的。接下来我们要学习的将是Javaweb程序,服从javaee规范。
目前的软件有两种,一是C/S(客户端—服务器)模式,向像我们常用的QQ这一类的软件,这类软件要求我们必须下载客户端,而且还随着服务器的迭代而升级。另外一种就是B/S(浏览器–服务器)模式,比如你现在浏览的CSDN我的博客,也就是大多数的网站都是这种模式的,所以我们只需要有一个浏览器就行了。而且有一个和C/S程序相反的优点,就是我们不必在服务器升级之后升级浏览器了。
Javaweb的程序就是B/S结构的。
服务器端
什么是服务器?
从物理的概念上来讲,服务器就是一台PC机,但是配置相对较高
具有什么功能的服务器就称作什么服务器,比如邮件服务器,web服务器
web服务软件
web服务软件的作用
作用:把本地资源共享给外部进行访问
网络通讯的基础
网络通讯的基础是:网络通讯的数据和具体的开发语言无关
常见的web服务器
WebLogic: BEA公司的产品 收费 支持JavaEE规范。
WebSphere: IBM公司的产品 收费 支持JavaEE规范
JBoss: Redhat公司的产品 收费的 支持JavaEE规范
Tomcat: 开源组织Apache的产品 免费 支持部分的JavaEE规范。(支持servlet、jsp、jdbc,但ejb, rmi不支持)
Tomcat
中小型软件开发,用Tomcat足够我们使用了,而且还是免费的。
下载安装完成Tomcat后,我们来学习一下如何启动和关闭Tomcat。
1.启动:
%tomcat%/bin/startup.bat,双击启动,在浏览器中输入http://localhost:8080时出现Tomcat(一只猫)的画面。启动成功。
2.关闭:
%tomcat%/bin/shutdown.bat双击关闭
常见的问题
- 闪退
tomcat软件是java语言开发的。,tomcat软件启动时,会默认到系统的环境变量中查找JAVA_HOME的变量。这个变量的作用是找到tomcat启动所需的jvm
解决办法; 到环境变量中设置JAVA_HOME的变量JAVA_HOME= C:Program FilesJavajdk-xxx(注意不要配置到bin目录下)
- 端口占用的错误
原因: tomcat启动所需的端口被其他软件占用了
解决办法:
a)关闭其他软件程序,释放所需端口
b)修改tomcat软件所需端口
找到并修改%tomcat%/conf/server.xml文件
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
- CATALINA环境变量问题
原因: tomcat软件启动后,除了查找JAVA_HOME后,还会再查找一个叫CATALINA_HOME变量,这个变量的作用是设置tomcat的根目录,不配置的话自动找到原本的目录
解决办法:建议不要设置CATALINA_HOME变量。检查如果有的话,清除掉
webapps
如果你想了解一下Tomcat的使用,那么你就可以将需要共享到网络上的资源文件放在webapps文件夹中(一个文件不能共享,必须将文件放进一个文件夹中)
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应用的目录结构
|- WebRoot : web应用的根目录
|- 静态资源(html+css+js+image+vedio)
|- WEB-INF : 固定写法。
|-classes: (可选)固定写法。存放class字节码文件
|-lib: (可选)固定写法。存放jar包文件。
|-web.xml
注意:
1)WEB-INF目录里面的资源不能通过浏览器直接访问
2)如果希望访问到WEB-INF里面的资源,就必须把资源配置到web.xml的文件中
开发动态资源
- 静态资源:当用户多次访问这个资源,资源的源代码永远不会改变的资源
- 动态资源:当用户多次访问这个资源,资源的源代码可能会发生改变的资源
动态资源开发技术
- Servlet : 用java语言来编写动态资源的开发技术
特点:
1)普通的java类,继承HttpServlet类,覆盖doGet方法
2)Servlet类只能交给tomcat服务器运行(开发者自己不能运行)(重要)
- 手动编写步骤
//1)编写一个servlet程序,继承HttpServlet
public class HelloServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//解决中文乱码问题
resp.setContentType("text/html;charset=utf-8");
//向浏览器输出内容
resp.getWriter().write("这是第一个servlet程序。当前时间为:"+new Date());
}
}
//2)找到HelloServlet类的class字节码,然后把拷贝到tomcat的一个web应用中WEB-INF/classes目录下
//3)在当前web应用下的web.xml文件配置Servlet
<!-- 配置一个servlet程序 -->
<servlet>
<!-- servlet的内部名称 ,可以自定义-->
<servlet-name>HelloServlet</servlet-name>
<!-- servlet类名: 包名+简单类名-->
<servlet-class>gz.itcast.d_servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- servlet的内部名称,和上面的名称保持一致!!!-->
<servlet-name>HelloServlet</servlet-name>
<!-- servlet的访问名称: /名称 -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
//(4)启动tomcat服务器,运行访问
访问servlet: http://localhost:8080/myapps/hello
- 工具开发步骤(Myeclipse)
1)创建web project (javaweb工程)
2)在WebRoot下建立静态资源文件,
3)在src下建立动态资源文件
3.1 new -> Servlet( servlet的代码生成器)
3.2 写pacakge -> class名 -> 修改mapping url
4)关联tomcat服务器
4.1 window-> Preferences - > MyEcplise -> servers -> Tomcat 6.x (注意一定要enable)
5)部署web project应用。(拷贝web应用到tomcat的webapps目录下)
6)启动tomcat服务器
7)访问servlet
下面这个链接是用idea创建Javaweb项目的过程:IntelliJ IDEA 创建Web项目(全教程)