Servlet基础解析(二)
1.servlet常用API
a.HttpServletRequest请求对象
setAttribute(String key,Object value);设置key对应的value值
getAttribute(String key);通过key取值
setCharacterEncoding();设置请求对象的编码格式
getInputStream();获取servlet中的输入流对象
getParamter(String key);获取前端页面提交的元素的name属性的值
eg: key =aaa
getParamter("aaa")
URL地址传参数方式:http://www.baidu.com?id=ksjdf&name=sdfs
获取id的值:getParamter("id")
获取name的值:getParamter("name")
getParameterNames();获取到有参数名称组成一个枚举类型对象
getParameterValues(String key);获取页面中相同元素名称的值组成的数组
getParameterMap();获取由元素的名称与值组成的Map集合
getRequestDispatcher(String url);获取到服务内部的转发器对象(url转发方式访问路径)
getRequestURL();获取请求的资源标识符
getMethod();获取请求提交的方式 POST GET
getCookies();获取本地中所有的cookie对象组成数组
b.HttpServletResponse 相应对象
addCookie(Cookie var1);把服务端生成cookie对象添加到客户相应
getCharacterEncoding();获取相应对象的编码格式
setCharacterEncoding(String val);设置相应对象编码格式
setContentType("text/html;charset=编码格式");设置相应对象在网页中编码格式
getWriter();字符输出流
getOutputStream(); 获取输出流
sendResirect(String url);跳转页面,重定向页面
2.转发与重定向区别实例以及解析
首先web项目中在WEB-INF中的页面受项目保护外部不能直接访问,需要通过转发访问。
2.1转发实例:
a编辑index.jsp,该文件与WEB-INF同级
b.新建内部页面forward_end.jsp在WEB-INF下
c.新建自定义servlet
项目结构如下
d.修改web.xml配置文件配置servlet
e.将项目部署在tomcat并启动,访问网页。
f.直接访问内部页面(WEB-INF下的页面)
g.访问外部页面,填写信息,通过转发访问内部页面
2.2转发过程
浏览器发送请求->web服务器接收此请求->调用内部的一个方法在容器内完成处理与转发动作->将目标资源返回给浏览器。
此过程中浏览器只做了一次访问请求,所以浏览器地址栏中地址不会变,因为只有一个请求request,所以请求中绑定的数据不会丢失。
2.3重定向实例
a.编辑index.jsp页面
b新建重定向后的页面redirect.jsp
c.新建一个servlet
d.修改web.xml配置文件配置servlet
e.将项目部署在tomcat并启动,访问网页。
f.访问网页并提交
2.4重定向过程
浏览器发送请求->web服务器接收后返回一个302状态码以及新的请求地址给浏览器->浏览器接收到302状态码就会跟根据新的请求地址在发送一个请求->服务器根据新的请求返回对应资源给浏览器。
此过程中浏览器总共发送了两次请求,所以浏览器地址栏中地址会变化,会显示最后一次请求的路径。且第一次请求request中绑定的数据会丢失。
2.5重定向与转发的区别:
从上图的例子中与过程解释中可以得出以下区别:
a.浏览器向服务器发送的请求次数不同,转发只有一次,重定向则至少两次。
b.浏览器地址栏地址不同,转发的地址不会变,重定向地址会变。
c.请求数据是否可传递,转发可传递,重定向不可传递。
d.转发可以得到服务器内部资源,重定向不可以。