1、什么是servlet
定义:Sun公司制定的一种用于扩展web服务器功能的组件规范。
(1)扩展web服务器
因为早期的服务器只能处理静态资源文件,不能够处理动态资源文件(需要经过计算生成的页面),因此需要扩展。
早期的CGI(公共网关接口)技术,由于跨平台性差、性能差(启动的是一个进程,消耗资源)、自己实现各种参数复杂。已被淘汰。
(2)扩展的方式
组件+容器
组件:符合规范,实现特定功能,可以部署在容器上的软件模块。
容器:符合规范,为组建提供运行环境,并且可以管理组件生命周期的软件程序。
优势:分工明确。容器负责大量的基础服务(浏览器与服务器之间的网络通讯,参数传递等),而组件只需要处理业务逻辑,并且不依赖于特定的容器。
2、启动Tomcat容器
tomcat/bin/startup.bat 启动容器
tomcat/bin/shutdown.bat 关闭容器
localhost:8080解释:
localhost:主机名,表示的本地,对应的ip:127.0.0.1
8080:tomcat端口号,可以修改。在conf文件夹下server.xml的第69行,尽量在3000以后的端口号
3、开发servlet组件步骤
第一步:定义java类,继承HttpServlet
第二步:重写父类service方法
第三步:在web.xml文件中配置servlet
4、如何通过URL地址找到servlet组件
分析:http://localhost:8080/servlet01/sayHello
第一步:localhost:8080与tomcat服务建立连接
第二步:根据servlet01查找tomcat/webapps目录下对应的文件夹
第三步:根据web.xml文件中的配置信息匹配/sayHello
第四步:若匹配成功,根据servlet-name查找对应的servlet组件
5、servlet运行原理
第一步:根据ip:端口号与服务器建立连接
第二步:通讯模块将数据根据http协议打包
第三步:浏览器向服务器发送请求
第四步:服务端的通讯模块,根据http协议拆包
第五步:容器创建request和response对象
第六步:容器实例化servlet组件
第七步:调用servlet当中的service方法处理数据
第八步:服务器的通讯模块打包数据,并发送响应
第九步:浏览器拆包,生成新的页面返回
6、get请求与post请求
get请求:
(1)在浏览器中直接输入url地址访问
(2)点击链接<a href="http://baidu.com"></a>
(3)表单默认提交方式<form method="get"></form>
post请求:
<form method="post"></form>
7、如何通过servlet输出中文
response.setContentType("text/html;charset=utf-8");
作用://通知服务器以utf-8的格式处理中文(重要)
//默认是ISO8859-1
//通知浏览器以utf-8格式编码
如何获取中文参数?
request.setCharacterEncoding("utf-8");//只对post请求管用
如果是get请求,需要在server.xml文件中
设置URIEncoding="utf-8"
案例练习:写一个DateServlet输出当前日期
public class DateServlet extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String timestr = sdf.format(date);
PrintWriter out = response.getWriter();//获取响应输出流
out.print(timestr);
out.close();
}
}
在web.xml中添加一下配置信息
<servlet>
<servlet-name>dateServlet</servlet-name>
<servlet-class>com.rst.web.DateServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dateServlet</servlet-name>
<url-pattern>/getDate</url-pattern>
</servlet-mapping>
8、常见错误
(1)servlet组件需要继承HttpServlet,否则500状态码
(2)web.xml文件中servlet-class路径要写对,否则500状态码
(3)service方法的方法名,参数,以及异常要写对,否则405状态码
(4)url地址要写对,否则404状态码
(5)servlet与servlet-mapping中的servlet-name需要保持一致