Servlet总结(2)
来源:互联网 发布:宁波seo大牛 编辑:程序博客网 时间:2024/06/05 14:07
1.servlet中的服务器内部跳转和客户端重定向
服务器内部跳转:
String url = "/hello.html"; request.getRequestDispatcher(url).forward(request, response);
特点:需要使用request对象来完成,不会改变浏览器地址栏。
客户端重定向:
String url = "hello.html"; response.sendRedirect(url);
特点:
使用response对象完成,浏览器会发出新请求,即产生新的request和response对象,会改变浏览器地址栏。
2.服务器内置对象
request—类型为HttpServletRequest
session—类型为HttpSession
application—类型为ServletContext
其中request直接作为doget和dopost的参数传递,session可通过request对象获得
HttpSession session = request.getSession();
application可通过request,session或ServletConfig对象获得,且为同一个
request.getServletContext(); this.getServletContext(); request.getSession().getServletContext(); this.getServletConfig().getServletContext();
request在每次客户端发出请求,服务器就会创建一个新的request对象,存取数据只能在一次请求之内起作用。
session在getSession方法第一次调用时创建,如果之前创建过,拿到此session,如果没有,则创建一个。并发送cookie,其中包含jsessionid,确保此次会话访问同一个session。
application在启动服务器时创建,在关闭服务器时销毁,每个项目运行期间只有同一个application对象
3.客户追踪技术
分为cookie和URL重写
//创建cookie对象 Cookie c1 = new Cookie("name","tom"); Cookie c2 = new Cookie("msg","hello"); //设置cookie的有效时间 c1.setMaxAge(60*60*24*365); c2.setMaxAge(60*60*24*365*10); //把cookie放到response里面 response.addCookie(c1); response.addCookie(c2);
浏览器访问会将该网址的cookie发送给服务器,可通过取值完成信息验证,自动登录。
URL重写:
String url = response.encodeURL("url");重写后: <a href="TestServlet;jsessionid=5480EF9016295A73DC56731A2F123246">
4.过滤器
过滤器类需要实现javax.Servlet.Filter接口。其中有三个方法:init–在这个过滤器服务创建时调用,初始化;destory–在该过滤器对象被销毁时调用;doFilter–当拦截到请求时调用该方法,完成信息验证。特别记住在其方法最后要FilterChain.doFilter(req,res)来将请求下发,下一层过滤或访问Servlert。
使用注解或在web.xml中配置filter
<filter> <filter-name>encodingFilter</filter-name> <filter-class>com.briup.filter.EncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
第一种 精确匹配 <url-pattern>/test_servlet</url-pattern> 表示此拦截器只会拦截/test_servlet这一个路径第二种 扩展名匹配 <url-pattern>*.html</url-pattern> 表示此拦截器只会拦截后缀名是.html的路径第三种 路径匹配 <url-pattern>/test/*</url-pattern> 表示此拦截器拦截/test路径下的所有资源第四种 匹配任意的url <url-pattern>/*</url-pattern>
过滤器会按照web.xml的配置的顺序由上到下执行,如果使用注解配置,会按首字母排序。
5.监听器
监听器共有8种接口,分为三类:
1.监听request,session,application的创建和销毁分别为
ServletRequestListener
HttpSessionLister
ServletContextListener
2.监听request,session,application三个对象中的属性变化,分别为ServletRequestAttributeListener
HttpSessionAttributeListener
ServletContextAttributeListener
通过HttpSessionBindingEvent类型来获取键值对来获取属性添加,删除,修改的属性名和属性值
3.监听session对象中存放的其他对象,监听的是放置对象本身。
在web.xml中配置
<listener> <listener-class>listener.TestListener</listener-class> </listener>
- Servlet总结(2)
- Servlet基础总结(2)
- servlet 总结2
- Servlet总结2
- Servlet 学习总结-2
- Servlet总结(转)
- Servlet总结(一)
- Servlet总结(二)
- Servlet总结(三)
- Servlet总结(一)
- Servlet总结(二)
- Servlet总结(三)
- Servlet总结(四)
- Servlet总结(1)
- Servlet总结(1)--Servlet的生命周期
- Servlet 学习总结(下)
- JavaWeb-servlet总结(一)
- Servlet学习总结(一)
- windows下安装rabbitmq的步骤详解
- java 内部类和静态内部类的区别
- 启动redis出现Creating Server TCP listening socket *:6379: bind: No such file or directory
- ubuntu16.04如何安装搜狗输入法
- NMOS/PMOS原理基础(祥:应该有点问题)
- Servlet总结(2)
- 欢迎使用CSDN-markdown编辑器
- 编译glibc(gcc)以及过程中遇到的一些错误
- PullToRefresh 适配
- 爬虫使用代理防封IP:HTTP Error 403: Forbidden
- 第九周项目一——二叉树算法库的建立
- SQL简介与语法 IOS中FMDB缓存框架用法
- PS2接口协议及代码分析
- mvp简单使用