servlet生命周期:
1、servlet的生命周期主要有三个方法
**1、 init()初始化阶段**
**2、 service()处理客户端请求阶段**
**3、 destroy()终止阶段初始化阶段:**
Servlet容器加载Servlet,加载完成后,Servlet容器会创建一个Servlet实例并调用init()方法,init()方法只会调用一次Servlet容器会在一下几种情况装载Servlet:Servlet容器启动时自动装载某些servlet,实现这个需要在web.xml文件中添加1在Servlet容器启动后,客户首次向Servlet发送请求Servlet类文件被更新后,重新装载处理客户端请求阶段:每收到一个客户端请求,服务器就会产生一个新的线程去处理。对于用户的Servlet请求,Servlet容器会创建一个特定于请求的ServletRequest和ServletResponse。对于tomcat来说,它会将传递来的参数放入一个HashTable中,这是一个String–>String[]的键值映射终止阶段:当web应用被终止,或者Servlet容器终止运行,或者Servlet重新装载Servlet新实例时,Servlet容器会调用Servlet的destroy()方法2、servlet的工作原理客户发送一个请求,Servlet调用service()方法对请求进行响应,service()方法会对请求的方法进行匹配,进入相应的逻辑层,完成请求的响应。但是Servlet接口和GenericServlet接口中没有doGet(),doPost()等方法,HttpServlet中定义了这些,但是返回的都是Error信息,所以每次定义Servlet都要重写这些方法。Sertvlet和GenericServlet是不特定于任何协议的,而HttpServlet是特定于Http协议的,所以HttpServlet中的service()方法中将ServletRequest,ServletResponse强转为HttpRequest和HttpResponse,最后调用自己的service方法去完成响应。
控制台看响应头,响应正文:
常用方法:
最重要方法:
req: getParameter()
得到多个数据(同名):
req: getParameterValues()
解决乱码问题:
请求转发和作用域:
转发用于跳转到其他页面,
作用域用于传给前端数据
jsp中可以写java代码来接受后台传来的数据:
字节输出流与字符输出流:
解决乱码格式问题:
重定向和转发的区别:
1、请求次数
重定向是浏览器向服务器发送一个请求并收到响应后再次向一个新地址发出请求,转发是服务器收到请求后为了完成响应跳转到一个新的地址;重定向至少请求两次,转发请求一次;
2、地址栏不同
重定向地址栏会发生变化,转发地址栏不会发生变化;
3、是否共享数据
重定向两次请求不共享数据,转发一次请求共享数据(在request级别使用信息共享,使用重定向必然出错);
4、跳转限制
重定向可以跳转到任意URL,转发只能跳转本站点资源;
5、发生行为不同
重定向是客户端行为,转发是服务器端行为;
Cookie对象:
java中有专门处理cookie的对象:
Cookie保存在浏览器中,每次可以传给后台。
创建cookie对象:
Cookie的获取:获取的是所有的Cookie:是Cookie数组
浏览器看Cookie的值:
Cookie失效时间:
maxAge属性:默认指是-1,即是浏览器关闭就失效
正整数:存活在本地磁盘中,存活指定秒数
负整数:只在浏览器中存活,关闭浏览器就失效
0:表示清空Cookie.
设置7天有效:
清空cookie:
Cookie不支持存中文:需要使用URLEncoder.encode()进行编码,获取时通过URLDecoder.decode()解码:
Cookie的路径:
HttpSession对象:
session作用域保存的数据一般用于在同一个客户端与服务器间会话间的多个页面访问间传递数据。如京东、淘宝等,登录后,在里面的每一个请求页面都能保持登录状态。
标识符:JSESSIONID:
放在Cookie里面,取出后,从服务器中的去找出是否有这个id的session的对象。
Session对象域:
使用:创建和拿到会话标识符
看出sessionId在浏览器cookie中保存。
方法:
session作用域:对比request作用域
换为重定向后:request作用域就拿不到值了(重定向发送两次请求)
session的销毁:
默认时间:30分钟,在tomcat中可以改:
自己设置时间:
ServletContext对象:
:应用对象,每一个web应用在服务器启动时,都会生成Application对象
4中获取:ServletContext对象:的方法
servlet三大作用域:
1、request作用域:在一次请求中有效(请求转发)
2、session作用域:在一次会话中有效,session失效则 销毁(无论是请求转发还是重定向)
3、在整个应用中有效,服务器关闭失效。
都有的方法:
setAttribute(name,value);设置作用域
getAttribute(name);获取作用域
removeAttribute(name);移除作用域
常用方法:
一般用 其 servletContext.getRealPath()方法,拿到项目的真实路径
文件的上传和下载:
文件上传:
如果表单的类型entype=“multipart/form-data”,对应的Servlet上一定要加注解@MultipartConfig
如果没有加注解,所有的参数都会为null
文件下载:
1、超链接下载:
a标签:当浏览器识别不了是,会下载:如快捷方式
或者给a标签加入了download
前端页面:
2、后台实现下载:
前端:
后台:
以上就是转发和重定向的区别是什么的详细内容,更多请关注php中文网其它相关文章!
参考:php中文网
上海尚学堂视频