一、web程序的演变
二、Servlet
1、概念
2、组件:Servlet
3、容器
4、tomcat容器,也是一个微型的应用服务器
PS:这一周所涉及到的名词:
web服务器,web容器,Servlet容器都是同一个东西
三、Servlet的组织结构
appName
WEB-INF
classes
xxx.class文件
lib(可选)
web.xml
index.html(可选)
四、tomcat服务器
1、安装(略)
2、检测环境变量:JAVA_HOME
3、启动程序
bin\startup.bat
4、关闭程序
bin\shutdown.bat
5、webapps:web项目部署的位置
五、手动开发一个web程序
(1)编写一个源文件:继承HttpServlet
重写service方法
(2)将源文件编译成字节码文件
javac -classpath servlet-api.jar的全路径 源文件.java
(3)编写web.xml
(4)按照web程序组织结构进行存放。
(5)启动tomcat服务器
(6)在浏览器上访问
http://ip:port/appName/url-pattern
六、使用IDE配置tomcat
1、配置tomcat
window–>preferences–>servers
–>runtime environment–>
tomcat-v7.0–>next
–>browser–>硬盘上的tomcat–>finish
–>apply and close
2、显示tomcat
window–>show view–>servers–>
点击连接–>选中tomcat-v7.0–finish
3、设置tomcat的参数信息
双击tomcat
配置server locations
选择 use tomcat installation
修改webapps
七、使用IDE开发web项目
1、new–>dynamic web project
2、起名后–>next–>next–>选择web.xml–>finish
3、定义Servlet组件,编写servlet规范的程序
4、配置web.xml
5、部署项目
右键点击servers里的tomcat–>
add and remove–>
添加要部署的项目–>finish
6、启动tomcat
7、使用浏览器访问
练习:开发第四个项目:fourweb
在浏览器上显示一组双色球
八、错误代码及其解决方法
服务器在处理完业务逻辑后,会响应浏览器,响应的内容
包含了状态编码(数字类型)
200:表示成功处理业务。
404:服务器处理的路径存在问题,找不到相关请求资源
如:
(1)在地址栏上的路径有问题(大小写不对)
(2)的值与地址栏路径不一致
(3)两个servlet-name不一致
(4)没有部署项目
(5)项目的组织结构有问题
405:容器找不到Servlet组件的service方法
(1)方法名写错
(2)方法的参数类型有问题
(3)方法的异常,返回值有问题
500:容器找不到Servlet组件
(1)没有继承HttpServlet或实现Servlet接口
(2)写的不错
(3)service里的逻辑出现了问题
九、HTTP协议
1、概念
它是w3c(万维网联盟)定义的一种用于应用层的协议,
就是规定了浏览器与web服务器如何通信和通信的数据格式
2、如何通信
(1)浏览器与服务器之间先建立连接
(2)浏览器将数据打包发送给服务器—>发送请求
(3)服务器要将数据打包发送给浏览器–>发送响应
(4)断开连接
一次连接后就断开一次:为服务器端有限的连接数做到
客户端的多次连接。
3、数据格式
请求数据包
请求行:请求方式 + 请求资源路径+协议版本
get +/firstweb/hello http/1.1
消息头:w3c组织定义的一些键值对,用来向服务器
发送一些特定的数据。如浏览器的类型及其版本。
如:
User-agent: Edge/17.1736
Accept:text/html
.....
实体内容:请求方法为post请求时,实体内容才有数据。
响应数据包
状态栏:服务器端处理数据的结果。
格式: 协议版本+状态编码+状态描述信息
如: http/1.1 200 ok
消息头:服务器端要告诉浏览器的一些特定信息
Connect: keep-Alive
Date:.....
ContentType:text/html
实体内容:服务器端处理后的数据
十、Servlet如何处理HTTP协议
当浏览器向服务器端发送请求后,服务器端会维护两个对象
用来封装和处理请求数据包的数据,及其响应数据。
分别是HttpServletRequest和HttpServletResponse对象
1、HttpServletRequest对象
封装和处理请求数据包的数据
提供了以下方法
String getParameter(String name)
String[] getParameterValues(String name)
String getHeader(String str)
Enumration getHeaders();
RequestDispatcher getRequestDispatcher(String url)
…
2、HttpServletResponse对象
封装和处理服务端要响应给浏览器的数据
提供了以下方法
void setContentType(String str)
void sendRedirect(String url)
…
十一、Servlet的工作过程
1、Servlet的运行原理
(1)浏览器依据IP和PORT与服务器建立连接
(2)发送请求数据包到服务器
(3)服务器创建Servlet组件对象
(4)使用request处理请求数据包
(5)使用response封装响应数据
(6)服务器发送响应数据包
(7)浏览器进行解析,生成页面
2、Servlet处理参数值
处理1:1形式的参数与参数值
String getParameter(String name)
如果name不存在,返回null
处理1:M形式的参数与参数值
String[] getParameterValues(String name)
如果name不存在,返回null
3、请求方式
浏览器向服务器发送请求的种类有八种:
GET,POST,OPTIONS,HEAD,PUT,DELETE,TRACE,CONNECT
(1)常用的两种GET和POST
get:向特定资源发送请求(如返回登陆界面)
–在地址栏上直接写地址
–表单的默认提交
post:向指定资源提交数据(提交表单,上传文件)
–表单的method属性设置POST
(2)两者的区别
get:提交的数据会显示在地址栏上,数据量小,最多为
4kb。不安全
post:提交的数据不会在地址栏上显示。因此我们可以提交
大量的数据,相对安全
一、Servlet获取参数值
情形1: 参数与参数值为1:1关系
String getParameter(String key)
情形2: 参数与参数值为1:M关系
String[] getParameterValues(String key)
二、 get与post请求
get请求的情形
(1)在地址栏上直接输入地址
(2)表单默认提交方式
(3)点击链接
post请求:
表单的提交方式为post
三、Servlet处理中文参数值
中文会出现乱码,原因是编码与解码的字符集不一致造成
发送请求时:中文乱码解决方式
方式1: 服务端先编码再解码,适合 get/post
服务器端默认使用iso-8859-1解码
浏览器端常用的为utf-8进行编码
方式2:只适合post
request.setCharacterEncoding("utf-8")
位置:处理请求参数前
发送响应时:
response.setContentType(“text/html;charset=utf-8”)
位置:写在获取流之前
四.Servlet与JDBC的连用