Servlet学习大纲:
Tomcat服务器中运行的是处理浏览器请求的代码。
实现技术:
Servlet
学习内容:
第一个Servlet程序
myEclipse集成Tomcat
Servlet的运行原理
web.xml讲解
Servlet的生命周期
Http协议
Request对象
Response对象
中文乱码问题解决
请求转发和重定向
Cookie和Session
ServletConfig和ServletContext对象
浏览器和服务器交互模式(B/S)
前端知识:
使用HTML文档将数据进行有效的组织起来,然后使用css和js以及jQuery让文档可以更加的美观并和
用户之间可以进行交互。
问题:
问题1:
在本地编写好HTML文档后,使用浏览器直接打开。并且在编写时,HTML文档的数据是直接写死的。无法动态的变更。
如果要改变数据,必须修改HTML源码
要求:
HTML文档应该存储在运行商的电脑中。HTML的中的数据需要动态的更新。
解决:
使用浏览器和服务器交互模式(B/S模式)
特点:
URL:统一资源定位符
HTTP:超文本传输协议
HTML:超文本标记语言。
使用:
主流服务器:tomcat服务器。 web service等
开发工具:
myEclipse
jdk版本:
1.7版本
数据库:
第一个Servlet程序
工具准备:
第一个Servlet程序:
1 安装myeclipse开发工具
2 安装Tomcat服务器
验证安装:
双加bin目录下的startup.bat文件,如果命令窗口正常显示则没有问题
闪退问题解决:
https://jingyan.baidu.com/article/9f7e7ec0be98b56f281554e9.html
3 创建并运行第一个servlet程序
1 在myeclipse中创建web project
注意:选择级j2EE5.0 jdk版本选择1.7
2 在src下创建包com.bjsxt.servlet
在包下创建一个继承了HttpServlet的java类
覆写service方法
清空service方法中的内容。
写:
//告诉浏览器响应的内容格式
resp.setContentType("text/html");
//输出到浏览器
resp.getWriter().write("<u>this is my first servlet.</u>");
//输出到控制台
System.out.println("这是我的第一个Servlet程序");
3 在webRoot下的web-inf文件夹下的web.xml中配置servlet
<!-- 配置Servlet -->
<!-- 配置servlet路径 -->
<servlet>
<servlet-name>first</servlet-name>
<servlet-class>com.bjsxt.servlet.MyServlet</servlet-class>
</servlet>
<!--配置Servlet的访问路径-->
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/f</url-pattern>
</servlet-mapping>
4 在Tomcat的webapps目录下创建一个文件夹,名字为myFirst
将myeclipse工作空间中刚才创建的项目的webRoot目录先的东西全部复制到此文件夹中
5 启动tomcat服务器
6 在浏览器中输入:http://localhost:8080/myFirst/f 访问即
------
知识点:
知识点:
1 web poject目录结构介绍
src: 存储java源代码的位置
src和webRoot之间: 项目相关的jar包
webRoot: 存储静态资源和jsp文件
WEB-INF: 存储项目的编译文件和jar包的文件夹 以及web.xml配置文件
lib文件夹: 存储项目导入的jar包的位置,例如 :jabc.jar包
2 tomcat目录结构介绍:
bin目录: tomcat服务器的程序入口 startup.bat
conf目录: 存错了tomcat服务器启动所需的配置信息
主要的 server.xml和web.xml
lib目录: tomcat自带的开发先关的jar包
logs目录: 存储的是tomcat服务器运行期间相关的日志信息
temp目录: 缓存目录
webapps目录: 存储了tomcat服务器运行的web项目
work目录: 存储的是jsp的编译文件
3 tomcat和浏览器的交互流程:
http://localhost:8080/a/f
localhost: 服务器所在的电脑的ip地址,如果服务器和浏览器在同一台电脑写localhost即可。
8080: tomcat服务器的端口号
a: 告诉服务器要请求的web项目。服务器会在webapps目录下查找一个叫“a”的文件夹或者压缩包(.war)
如果找到了则继续执行,如果未找到则直接返回404给浏览器----(虚拟项目名)
f: 要执行的servlet的别名。tomcat服务器会根据此别名查找项目下的web.xml文件。然后执行f映射的servlet文件。
注意:
提升安全级别。方便程序员使用。
注意:
IP+端口号可以在网络中唯一的定位一个应用程序。但是因为难于记忆,所以
使用网址的形式提供给普通用户。
注意2:
服务器开启后不要关闭。
总结:
最简单的servlet开发流程
第一步
创建一个继承了HttpServlet的java类,并覆写service方法。
在service方法中书写业务处理代码
第二步:
在web.xml中配置servlet
第三步:
将写好的项目webRoot下的内容复制到tomcat下的webapps下的虚拟项目中
第四步:
启动服务器,访问即可。
url格式:IP:端口号/虚拟项目名/servlet别名?请求数据
myeclipse集成tomcat
Myeclipse集成Tomcat:
1. myEclipse集成Tomcat
https://jingyan.baidu.com/article/2a13832898c497074a134fdc.html
2.myEclipese项目部署(冷部署)
https://jingyan.baidu.com/article/a65957f4894faf24e67f9bbe.html
注意:
选择的项目部署到服务器成功后,默认在tomcat的webapps目录下
新建文件夹的名字为myeclipse的项目名
注意2:
在myeclipse中保存代码的时候会重新编译并重新复制到tomcat中
3发布
在myeclipse的servers窗口中选择集成好的tomcat然后点击启动按钮即可。
注意:
如果servlet文件发生了更改,需要重新启动tomcat服务器才能看到效果。
tomcat真正执行的servlet文件是从虚拟项目中加载到内存中的文件。
4 自定义部署项目名:
选中要部署的项目单击右键选择properties--->myEclipse-->project Facts-->web-->更改 web-Root的内容(注意保留/)
然后部署项目即可。
Sevlet的web.xml配置学习
Servlet的web.xml配置文件学习:
web.xml文件的作用:
tomcat会调用此文件用来进行查找要执行的Servlet。
使用:
第一种配置方式:
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>com.bjsxt.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/m</url-pattern>
</servlet-mapping>
作用:给servlet配置一个专门的别名,不能通用,访问此servlet必须通过此别名。
第二种配置方式:
<servlet>
<servlet-name>my2</servlet-name>
<servlet-class>com.bjsxt.servlet.MyServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my2</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
作用:给servlet配置一个通配性较高的servlet,格式 *.do
第三种配置方式:
<servlet>
<servlet-name>my3</servlet-name>
<servlet-class>com.bjsxt.servlet.MyServlet3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my3</servlet-name>
<url-pattern>/a/*</url-pattern>
</servlet-mapping>
作用:给servlet配置一个按照模块访问的url-pattern
web.xml的加载时机:
服务器启动的时候即完成所有部署的项目的web.xml的加载。
注意:
1. url-pattern不可以重复,一个url-pattern只能对应一个servlet。
否则服务器启动报错:Caused by: java.lang.IllegalArgumentException: The servlets named [my] and [my2] are both mapped to the url-pattern [/m] which is not permitted
2 一个Servlet可以对象好几个url-pattern
Servlet的生命周期
Servlet的生命周期:
1 复写init()方法:
init()方法只会被执行一次,Servlet第一次被调用的时候执行
先于service()方法执行
2 复写destory()方法:
此方法在服务器关闭的时候会执行,说明Servlet是服务器关闭的时候才被销毁的。
Servlet的生命周期1:
从第一次调用到服务器关闭。
Servlet的生命周期2:
如果在web.xml中配置了<load-on-startup>1</load-on-startup>,生命周期从服务器开启到服务器关闭
小结
浏览器和服务器交互模式
第一个Servlet程序
myeclipse集成tomcat
Sevlet的web.xml配置学习
Servlet的生命周期
小知识点:
servlet tomcat
1.tomcat:
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
2.从servlet开始,使用myeclipse2014 tomcat MySQL navicat
3.使用Jdk1.7
4.myeclipse->project->clean…到底有什么用:
其实主要作用就是把编译好的class等文件删除,激活eclipse的自动编译。
解决的问题就是,有时候你把代码改了,但因为一些未知的原因,eclipse的自动编译没有成功,导致运行结果不正常。
当你的工程出现一些莫名其妙的错误时(当然不是语法错误),用一下这个功能,效果不错的
5.因为安装了oracle XE 版本,其中有一个服务占用了8080端口,所以把OracleServiceXE、OracleXETNSListener服务禁用并关闭,若用oracle 11g 企业版 就不会出现这个问题。
6.xml是处理虚拟目录的别名和真正的包的全限定路径之间的映射关系。让自己的web项目安全
7、 //告诉浏览器响应的内容格式
res.setContentType("text/html;charset=utf-8");
8、servlet:
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
Servlet 的命名可以看出 sun 命名的特点,如 Applet 表示小应用程序;Scriptlet = Script + Applet,表示小脚本程序;同样 Servlet = Service + Applet,表示小服务程序。
9、静态网页与动态网页:
所谓的动态网页,是指跟静态网页相对的一种网页编程技术。静态网页,随着html代码的生成,页面的内容和显示效果就基本上不会发生变化了——除非你修改页面代码。而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。