转发
1.一个项目中的其他servlet
2.转发之后请求对象变了,但是里面的内容没有变化 响应对象也没有变化
3.转发之前不能关闭响应对象
4.转发之后 resp 对象会被清空
5.转发之后 地址栏不会发生变化
6.理论上 转发不限制次数
7.转发是一次请求
重定向
1.重定向为两次请求
2.重定向在客户端完成
3.重定向之后 地址栏会发生变化为重定向的地址
4.可以在不用的服务器中完成
5.重定向可以执行重定向后的代码
doGet /doPost
1.get请求会将请求参数携带在地址栏上,而post请求会将参数携带到实体内容中
2.地址栏携带参数大小有限,参数直接显示不太安全<br>
3.*实体内容中携带参数理论上无限量,参数不会被普通用户看到,略微安全一些
对请求类型的处理
在service方式中使用req.getMethod();获得请求类型,通过if判断
.HttpServlet类中service方法是每次必须调用的方法,根据请求类型去调用自己的doPost和doGet等等方法<br><br> *重写doGet或者doPost等等请求 <br>
servlet生命周期
1.加载servlet
2.创建servlet对象
3.初始化(调用此对象的init方法)(请求第一次到达时)(配置启动优先级可以让servlet在服务器启动时就初始化)牺牲服务器启动时间换取第一次执行时间
4.浏览器发送请求时服务器调用service方法
5.服务器停止时servlet销毁
服务器的目录文件 及其作用
conf
配置文件的目录server.xml中主要是配置关于服务器的一些信息,比如说端口号
浏览器地址
http://服务器的ip:端口号/服务器里部署的项目名/项目内servlet的路径
EL表达式
${} 用来取值
依次从小到大去取值,直到找到为止就不再继续向下找,如果都找不到,返回空字符串
${emp.empno}<br><br> ${emp["empno"]}<br><br> *第二种方式适用于属性名带_的形式,也可以访问数组
热部署
update resources:修改静态资源文件(不涉及java文件)
update classes and resources:修改java文件以及静态资源文件
redeploy:重新部署,idea会将所有文件重新编译并且重新部署到服务器中
restart server:重启服务器
http协议
超文本传输协议,由w3c制订的一种网络应用层协议定义了浏览器与web服务器之间通信的过程以及通信时所使用的数据格式。
获得请求参数值
1.req.getParament
req.getParameterValues("like")
req.getParameterMap()
servlet线程安全
多个线程访问一个servlet时会出现资源竞争问题
1.避免这样的代码
2.让servlet实现一个接口,让servlet多例,内存肯定会溢出(不允许使用)
3.利用线程的锁机制(不推荐使用,影响性能而且处理不好可能会出现死锁)