本文转载自:Servlet运行原理及404、500、405异常原因和解决方法总结

一、Servlet运行原理

比如,在浏览器地址栏输入http://ip:port/web01/hello,整个通信流程如下图所示:

分步解释:

(1)浏览器依据ip,port建立与servlet容器(容器同时也是一个简单的web服务器)之间的连接。

(2)浏览器将请求数据打包(按照http协议,该数据包也称为请求数据包)。

(3)浏览器发送请求数据包给容器。

(4)容器收到请求数据包之后,解析该数据包

(5)将4中解析之后得到的数据封装到request对象上,同时,容器还要创建response对象。

(6)容器要依据请求资源路径("/web01/hello")找到servlet的配置,然后创建servlet对象。

(7)容器调用servlet对象的service方法。容器会将事先创建好的request,response作为参数传递给service方法。

( 8-10)在service方法里面,可以通过request对象获得请求参数,并进行相应的处理,处理结果会放到response对象里面。

(11-13)容器从response对象中取出处理结果,然后打包(按照http协议,该数据包称之为响应数据包)。再将响应数据包发送给浏览器。

(14-15)浏览器收到响应数据包之后,解析处理结果,然后生成相应的页面。

其实Java Web开发人员需要手动编写代码的部分主要在8-10,因为其他部分工作已被web服务器和开发工具完成。

二、常见异常及处理办法

(1)404

服务器依据请求资源路径找不到对应的资源。

<1>错误原因:
              a. 请求地址写错了
              b.<servlet-name>不一致
          <2>解决方式:
              a. 依据http://ip:port/appname/servlet-url检查请求地址。
              b. 检查web.xml文件。
      (2)500

运行时出错。

<1>错误原因:
             a. 配置文件类名写错了。
             b. 没有继承HttpServlet。
             c. 程序代码写错。
          <2>解决方式:
             a. 检查web.xml文件。servlet-class中有没有把类名写错(必须是完整类名)
             b. 检查程序代码。
     (3)405

方法异常。

<1>错误原因:
             service方法不正确
          <2>解决方式:
             检查service方法(方法名、返回类型、参数类型、异常类型)。

(022)java后台开发之HttpServletRequest相关推荐

  1. (021)java后台开发之HttpServletRequest

    文章转自:https://www.cnblogs.com/xdp-gacl/p/3798347.html servlet-api 的servlet.http.HttpServlet 的学习.大神的文章 ...

  2. (015)java后台开发之web项目中如何添加jar包和删除jar包

    创建一个java web项目后,创建一个index.jsp运行起来后,就发布到服务器上!最简单的java web工程就算完成了!但是往往我们的工程比较复杂,经常会用一些第三方的库(jar)来帮助我们方 ...

  3. (012) java后台开发之Apache与Tomcat有什么关系和区别

    转载:http://blog.csdn.net/longzs/article/details/10959945 经常在用apache和tomcat等这些服务器,可是总感觉还是不清楚他们之间有什么关系, ...

  4. (020)java后台开发之JAVA集合中的List接口

    转载:http://blog.csdn.net/self_realian/article/details/51881977 原文写的很好.请看原文. JAVA中的集合类: JAVA中的集合类,是一种工 ...

  5. (016)java后台开发之Eclipse安装反编译插件

    在java(015)中gson-2.2.4.jar 源码的查看基于Attach Source code 链接到源码库gson-2.2.4-source.jar 实现的.而我导入的servlet-api ...

  6. (008) java后台开发之java程序中的控制结构

    转自:https://course.tianmaying.com/java-basic+control-flow# 博客应用综合实例 接下来我们来设计一下博客应用,让它可以管理博客. 用户可以输入以下 ...

  7. (007) java后台开发之Scanner报错java.util.NoSuchElementException

    在测试Scanner 时写了两次 .close(); 结果运行报错. 原因参考:http://www.cnblogs.com/qingyibusi/p/5812725.html 一个方法A使用了Sca ...

  8. (005) java后台开发之Mac终端命令运行java

    Mac终端命令运行java 由于mac已经装好java环境,所以直接课运行java命令,很方便. 1.编译一个java文件: javac /Users/用户名/Desktop/HelloWorld.j ...

  9. (004) java后台开发之Eclipse(Neon) 版本安装Java EE插件

    Eclipse Neon Java版本安装Java EE插件 Help→Install New Software 地址:Neon - http://download.eclipse.org/relea ...

最新文章

  1. scrapy创建以及启动项目步骤!
  2. 2012需要一种智慧
  3. 【LTE】LTEMIMO系统的MATLAB仿真
  4. 电脑开机3秒就重启循环_移动办公神器!电脑包秒变支架、鼠标垫,3合1设计超方便!...
  5. java 实现 web 客户端_Java web客户端和服务器端交互的原理
  6. 指定rviz的点启动_好消息!武汉已经启动新冠疫苗紧急接种工作
  7. LeetCode 21. 合并两个有序链表 golang
  8. 神奇的 SQL 之团结的力量 → JOIN
  9. 一些常用PLSQL语句 和事务
  10. 【九度OJ1348】|【剑指offer36】数组中的逆序对
  11. Maven的打包命令
  12. python将经纬度坐标转换为xy_Python将x,y数据转换为经纬度d
  13. 分布式文件系统 FastDFS 5.0.5 Linux CentOS 7 安装配置
  14. 生命已经这么短,为什么还不追求自己真正想要的
  15. matlab2016与VS2019混合编程
  16. ubuntu 本地和服务器scp文件传输
  17. 盘点业务流程的SAP操作调整
  18. python查看迭代器可迭代次数
  19. button渐变色 ios_ios开发
  20. cassandra 数据库

热门文章

  1. OpenStack Pike Minimal安装:三、镜像管理
  2. 遍历——PowerShell三分钟(十)
  3. CF401D Roman and Numbers
  4. Python(Dict和Set类型)
  5. spring配置异步执行
  6. asp.net中page对象生命周期和各事件执行顺序
  7. 我的第一个网页制作:Hello World!
  8. nodejs的child_process同步异步
  9. 进击的UI---------------UIPickerView
  10. Excel 单元格隐藏