Servlet学习笔记

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需要保持一致

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值