JavaWeb~如何使用Servlet,带你搞懂Servlet的整个服务流程

1.tomcat补充

(1).tomcat启动报错的时候,检查

  1. 1.8080端口号是否被占用netstat -ano|findstr 8080
  2. 2.JAVA_HOME是否配置出错(显然基本上不会)
  3. 3.tomcat目录/log/catalina.out,有时候是带日期的

(2).tomcat部署web项目:

(1).tomcat目录/webapps下,将项目复制进去,项目名就是文件夹名称(如果把war包放进去,tomcat启动后会自动解压)

(2).docBase指定外部目录作为项目部署路径

  • 标准的web项目标准结构(和开发的时候不一样):

再次理解,项目构建工具,如maven的使用(从开发环境到部署环境的构建可配置化,所以如果发现前端界面出问题了,优先去target目录(部署环境)下找问题

  • idea中配置tomcat并运行(docBase外部目录部署的方式)

1.配置时注意是war explored,表示使用文件夹来部署

2.Deployment中Application Context表示应用上下文/项目部署名

3.访问也要使用Application Context


2.(流程分析)uri查找的过程和映射的资源理解

正在上传…重新上传取消

  • URL查找的过程:

ip对应主的得地址

port对应进程

应用文路径对应项目

之后的uri,对应项目中的资源

  • uri映射资源:

(1).资源包括静态资源文件

(2).还包括程序提供的资源(Servlet的路径及http请求相应资源)


3.写一个servlet

(1).注解的使用:

小括号包括对个属性,属性名=属性值,多个之间逗号间隔,属性名为value时可以缺省

原来应该是这样

因为我们这里只需要用value,所以可以缺省


(2).(重要)Servlet注意事项

1.Servlet定义服务:注意服务路径必须是/开始,否则tomcat启动就会报错

2.浏览器输入url的访问请求默认是get请求,想要对指定url发起post请求可以自己在文件中指定,也可以使用postman来发起

3.servlet代码同样可以debug(要多用),打上断点,用debug的方式运行(平时也推荐一直用debug的方式运行),然后postman发起了post请求(即使是post,还是会出错)

可以看到方法栈里面有doPost方法,说明是成功进入这个方法了

4.为什么使用了post方法请求还是返回405呢?

因为我们默认调用的是super.doPost方法,而父类的doPost方法是直接抛出一个405错误。(其实是内部的tomcat在里面在用的Servlet和官方的Servlet不统一导致的)

同样的,如果没有重写,如果发生了对应的请求,会自动调用父类的方法,抛出405错误。

5.Servlet文件一旦发生改变,必须重新启动tomcat,html文件发生改变,一定要刷新一下浏览器


(3)怎么写servlet

1.写上WebServlet注解的value值(这个是服务路径,通过这个来定位到该Servlet对象),然后让Servlet类继承HttpServlet类

2.重写相应的请求方法

* 每次http请求映射到某个Servlet的资源路径,都会调用service生命周期方法

* 如果请求方法没有重写,就调用父类的doXXX(对应请求方法),返回405

* 如果重写,会将请求数据包装为一个Request请求对象,这时候虽然还没有响应,但是也包装了一个Response响应对象

3.设置请求,响应编码,及响应数据类型(为响应体设置Content-Type数据类型)

4.解析数据,request.getParameter方法获取请求数据:在url和请求体(body)内获取数据,数据格式为k1=v1&k2=v2(这种键值对的数据都可以获取)

5.返回响应数据

获取io输出流,输出内容,刷新缓冲区,关闭资源


(4)(重要)servlet服务执行流程分析

  • 总体流程分析

1.客户端通过url请求响应服务,通过ip定位主机,port定位端口号,应用上下文路径定位web应用,然后通过剩下的uri(服务路径)定位静态网页资源。

2.服务端响应网页资源

3.客户端受到网页资源,网页初始化的时候,或者点击某个按钮,发生了某个事件之后网页中我们可以自己写代码来调用Servlet服务)要调用后端的servlet服务,于是向后端发起Servlet请求(也是通过ip port 上下文路径 服务路径的方式进行请求)

4.服务端响应Servlet请求

  • Servlet请求响应分析

tomcat启动:

通过一些机制,实例化Servlet对象:

1.产生服务路径(资源路径)和Servlet对象之间的映射关系

2.每次http请求,通过上下文路径+服务路径,查找到唯一的Servlet对象

3.调用Servlet对象的service方法

4.service方法中,将doXXX方法组织为一个模板方法,我们可以重写对应的方法,如果不重写,默认执行父类的方法,抛出405异常

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值