myeclipse安装以及tomcat服务器配置
这里使用的是myeclipse2014以及tomcat7,原因是下载的myeclipse中如果需要使用myeclipse运行tomcat服务器的时候,myeclipse支持的tomcat服务器版本只到tomcat8,所以可以下载安装相匹配的,不唯一。
注意tomcat的环境配置,检测。
servlet创建流程
1.创建包com.zc.servlet
2.在包中创建一个实现了httpservlet的Java类
3.复写service方法,在方法中声明请求处理规则
4.在web.xml文件中配置servlet
5.将web项目中webroot下的所有内容复制到服务器的webapps目录中的新建的文件夹中
6.启动服务器
注意:使用这个方式来创建servlet的时候,每次更改xml文件时需要重新将修改过的xml文件重新复制粘贴到webapps文件夹中,所以使用起来较为繁琐。通过myeclipse的关联功能可以较为方便的实现。
通过myeclipse软件实现客户端与服务器之间的关系大致如图:
![c76372c60dfa20865145ccddf481df03.png](https://i-blog.csdnimg.cn/blog_migrate/69a5df212f459f777d5620cebe9fd87a.png)
localhost:8080,根据ip和端口号可以找到对应服务器同时服务器会去webapps下查找处理此次请求的代码
Project/s,:uri数据,服务器根据uri找到对应的servlet执行,去项目中的web.xml文件中去匹配
注意:服务器在接收到浏览器的请求后,会开辟一个线程来处理 此次请求,在线程
中调用对应的servlet进行处理
服务器调用servlet处理请求,但是一个servlet服务器只会创建一个实例化对象,该对象是线程
共享的。
Servlet的url-pattern的配置方式
1.精确配置:<url-pattern>/别名</url-pattern>
2.模糊配置:<url-pattern>*.后缀名</url-pattern>
3.拦截所有请求:<url-pattern>/*</url-pattern>
4.拦截处理所有Servlet的别名以one开头的路径的请求:<url-pattern>/one/*</url-pattern>
注意:多个servlet配置同一个url-pattern会java.lang.reflect.InvocationTargetException,反射异常
Servlet只会创建一个
默认采用单实例多线程的方式处理多个请求,如果对每一个客户请求都生成一个servlet对象,web服务器的访问量比较大,内存占用会很高,所以当多个请求发送到同一个servlet,服务器会为每个请求创建一个新线程来处理
注意:服务器在接收到浏览器的请求后,会开辟一个线程来处理 此次请求,在线程中调用对应的servlet进行处理,服务器调用servlet处理请求,但是一个servlet服务器只会创建一个实例化对象,该对象是线程共享的。
servlet生命周期:
从第一次被调用到服务器关闭
init方法,service方法,destory方法
init方法 :servlet被初始化创建的时候调用
service方法:处理请求的时候
destory方法 :servlet被销毁的时候。
doGet、doPost和service方法的区别
doGet: 处理get方式的请求。
doPost: 处理post方式的请求
Service: 无论是什么类型的请求方式,服务器都会优先执行service方法。
注意:servlet中没有声明service方法,会根据请求方式调用对应的方法进行请求处理,如果在servlet中没有声明对应的请求处理方法,则会报405错误。
doGet和doPost和service方法调用的本质
tomcat服务器其实只认识service方法,如果我们自己声明的servlet中没有覆写service方法,则会执行HttpServlet中的service方法,而HttpServlet中的service方法会根据请求方法调用对应的doXX()方法执行请求处理。
servlet常见异常
(1) 404的原因。
资源未找到:1.在请求地址中的servlet的别名书写错误 2.虚拟项目名称拼写错误
(2) 500错误的原因
内部服务器错误:1.web.xml中servlet的全限定路径拼写错误 2.servlet方法体的代码执行错误
(3) 405的原因
请求方式不支持:请求方式和servlet中的方法不匹配所造成的