- 浏览: 173814 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
1055229269mao:
一起学习,一起进步
servlet登陆过滤器 -
1055229269mao:
亲测好用。非常感谢了
servlet登陆过滤器 -
wx_hello:
此行:Builder builder = new BookDo ...
xml 解析例子 -
wx_hello:
我想说楼主,你那个SAX解析的不对吧。。貌似使用的dom解析出 ...
xml 解析例子 -
hxp520520:
下了源码,正研究
java ip 查询定位 QQwry.dat
资源跳转的方式
(内部跳转:forward和include,外部跳转:sendRedirect)
1)forward
forward后的响应内容由所请求的资源给出
RequestDispatcher rd=request.getRequestDispatcher("SuccessServlet");
request.setAttribute("userinfo", "new User()");
rd.forward(request, response);
2)include
inclue后的响应内容由其本身给出
out.println("<html><body>");
RequestDispatcher rd = request.getRequestDispatcher("/ch04/header");
rd.include(request,response);
out.println("</body></html>");
forward和include的相同点:
绝对路径中/都是web应用
服务器内跳转,客户端地址栏无变化
都是同一个请求
3) sendRedirect
客户端地址栏发生变化
两次请求,request范围内设置的所有属性将失效
response.sendRedirect("ShowInfo");
/指代 响应内容 地址栏 请求 跨应用
forward
web应用 请求资源 不变 一次 不能
include
web应用 本身 不变 一次 不能
sendRedirect
服务器 请求资源 变化 两次 能
web应用: http://localhost:8080/hello
服务器: http://localhost:8080
<form action="/...">,<a href="/...">:"/"指代服务器
注:能用forward方式,就不要用sendRedirect
1)从性能
2)从对服务器内部资源的保护(地址栏内能否显示服务器资源URL)
考虑
保护服务器资源
1)使用Filter对请求进行过滤
2)把要保护的资源方到WEB-INF下,客户端浏览器不能直接访问该目录下
的资源,我们可以通过Servlet等访问
设置属性的四个范围:
范围 对应类 Jsp内建对象
javax.servlet.ServletContext application
应用级别 针对整个web应用
javax.servlet.http.HttpSession session
会话级别 针对一次会话
javax.servlet.http.HttpServletRequest request
请求级别 针对一次请求
javax.servlet.jsp.PageContext page
页面级别 针对一个页面
注:一个application可以跨越多个session,一个session可以跨越多个request,
一个request可以跨越多个page;
实际项目开发中,从性能、占用资源角度考虑,优先使用小级别的;
获取RequestDispatcher
1)HttpServletRequest.getRequestDispatcher(...):相对/绝对路径
2)ServletContext.getRequestDispatcher(...):绝对路径
注:这里的相对是绝对,/表示web应用(如http://localhost:8080/hello)
3)ServletContext.getNamedDispatcher(...):根据servlet的名字获取
------------------------------------------------------------------------------------------
forward之前不能pw.flush();
------------------------------------------------------------------------------------------
外部跳转:让浏览器重新发送一个新的请求,跳转前后不是同一个请求;访问前后路径不同;
------------------------------------------------------------------------------------------
总结:
forward:内部跳转或则是服务器内部重定向;
servlet1-------forward-----servlet2
servlet1和servlet2中的request对象是同一个。
sendRedirect:外部跳转或则服务器外部重定向;
servlet1-------sendredirect-----servlet2
servlet1和servlet2中的request对象不是同一个。
作外部跳转调用response的sendRedirect方法,这个方法中传入的路径可以是相对的,也可以是绝对的;
相对的跟forward相同;
绝对的:应用路径+servlet url-pattern(这点和内部跳转是不同的);
------------------------------------------------------------------------------------------
四、在tomcat中配置数据源
1)Admin登录,找到项目
2)创建Data Source
JNDI Name: jdbc/oracle
URL: jdbc:oracle:thin:@192.168.1.200:1521:briupdb
Driver: oracle.jdbc.driver.OracleDriver
User: briup
Password: briup
3)web.xml中配置资源引用(可选,新版本的tomcat不需要配置)
<resource-ref>
<description>
Oracle Datasource example
</description>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
4)Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle");
注:配置数据源之后,在Tomcat/config/Catalina/..目录下会新建一个xml文件,
里面存放数据源相关的信息
五、持久化状态:Cookie,Session
HTTP协议是无状态的,为了保存会话状态,我们有两种解决方案:
1、Cookie,把会话状态信息保存在客户端
2、Session,把会话状态信息保存在服务器端
Cookie:保存一些键/值对,到客户端浏览器
name:briup
password:briup
使用Cookie:
1)创建Cookie
Cookie cookie = new Cookie("name","value");
2)将Cookie加到客户端浏览器
HttpServletResponse.addCookie(cookie);
3)在服务器端取出Cookie(返回Cookie[ ])
HttpServletRequest.getCookies();
Cookie.getName();
Cookie.getValue();
会话Cookie:只在当前会话起作用的Cookie
持久Cookie:保存在客户本地一段时间的Cookie
设置Cookie的时长:Cookie.setMaxAge(int second),单位秒
设置Cookie的有效路径:Cookie.setPath(...)
Cookie:由服务器创建,但是存放在客户端;
Cookie cookie=new Cookie(name,value);
cookie.setMaxAge(timeout);
当timeout<0时,意味着这个cookie只要浏览器关闭就会消失;
当timeout=n(n>0)时,意味着cookie将会在客户端被保存n秒;
当timeout=0时,意味着这个cookie将会被删除;
name相同的cookie会被覆盖.
response.addCookie(cookie);
服务器端获得客户端传过来的cookie:Cookie[] cookies=request.getCookies();
Session:
获取Session的方法:
HttpServletRequest.getSession()<==>HttpServletRequest.getSession(true)
如果客户和服务器已经建立起会话,直接使用已有的Session对象,
如果没有建立,就新建一个Session对象
HttpServletRequest.getSession(false);
设置属性:HttpSession.setAttribute("name",Object);
获取属性:HttpSession.getAttribute("name");
删除属性:HttpSession.removeAttribute("name");
使用Session来保存会话信息,在客户端也要留下一个标识,一般用JSESSION表示
在用户禁用Cookie时使用Session方式在服务器端维持会话状态,在客户端要留一个Session的id号,
优先使用Cookie的JSESSIONID存放,如果禁用了Cookie,URL重写的Session id号会被追加到
浏览器地址中URL的后面,用jsessionid表示
(http://localhost:8888/servlet/ch5/urlcounter;jsessionid=9FFA9CCB7D86134E0256E94D05E6DC44)
重写:String encodedURL = response.encodeURL("/servletjd0710/ch05/UrlBasedCounterServlet");
Session什么时候失效?
1:程序中调用HttpSession.invalidate()方法
2:Session过期,在Session的最大有效时间以外
3:关闭应用服务器
设置Session的有效时间:
1:HttpSession.setMaxInactiveIntervale(int second) 单位秒
2:在web.xml中进行配置
<session-conf>
<session-timeout>...</session-timeout><!-- 单位分钟 -->
</session-conf>
注意:当程序中和web.xml中都设置了Session的有效时间时,以程序中的设置为准
发表评论
-
Port 80 or 443 (SSL) already in use ! Installing Apache2.2 service failed!的解决方案
2011-02-15 10:16 2963Port 80 or 443 (SSL) already in ... -
java断言 assert
2010-04-14 02:37 1485java 断言 assert 初步使用:断言开启、断言使用主要 ... -
java抽取word,pdf的四种武器
2010-03-12 16:37 1493很多人用java进行文档操作时经常会遇到一个问题,就是如何获得 ... -
Java调用com组件操作word使用总结
2010-03-12 16:35 2182一、准备工作 先了解一下概念,JACOB 就是 J ... -
Java操作office 2007文档
2010-03-12 16:23 1793我们希望将Office 20 ... -
java平台下通过jacob对excel,word进行打印等操作
2010-03-09 09:22 2864因为项目有个需求,要求能够在某个预定时间对特定报表进行自动打印 ... -
An internal error occurred during: "JSP Semantics Validator (JSF)". org/eclipse/
2009-11-17 11:58 2208An internal error occurred duri ... -
Comparator和Comparable比较
2009-09-22 23:40 834当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comp ... -
struts验证框架开发
2009-09-10 17:38 812一、启用Validator插件 虽然Validator框 ... -
在jsp环境中配置使用FCKEditor
2009-09-09 21:32 752FCKeditor是sourcefor ... -
配置FCKeditor(FCKeditor for java)
2009-09-09 21:28 12391.下载FCKeditor.java ... -
Java排序算法
2009-07-20 15:52 1065public class Sort { public ... -
log4j配置详
2009-07-17 14:59 711log4j详解 ... -
关于java打印功能的最简单实现的学习笔记
2009-07-16 17:03 2370<scr ... -
Java高级编程:打印--学习如何使用打印服务API
2009-07-16 16:36 1728作者:Brett Spell 翻 ... -
Tomcat 配置
2009-07-15 11:00 867Tomcat启动分析 1 - To ... -
键盘快捷键大全
2009-07-01 09:48 1033、常见用法: F1 ... -
Linux必学60个命令文件处理
2009-07-01 09:47 983linux系统信息存放在文 ... -
pager-taglib使用指南【转】
2009-06-30 16:38 7462009-05-13 09:49 一简介, ... -
pager-taglib使用指南【转】
2009-06-30 16:37 7442009-05-13 09:49 一简介, ...
相关推荐
JavaServlets帮助文档JavaServlets帮助文档JavaServlets帮助文档JavaServlets帮助文档JavaServlets帮助文档JavaServlets帮助文档JavaServlets帮助文档
《Murach's Java Servlets and JSP 2nd Edition》是一本深受欢迎的Java Web开发教程,涵盖了使用Servlets和JSP进行动态网页编程的核心知识。源代码是学习过程中的重要辅助材料,它能帮助读者深入理解书中的实例,...
Java Servlets和Java Swing是Java开发中的两个重要技术领域,分别用于Web服务器端和桌面应用程序的开发。 **Java Servlets** Java Servlets是Java平台上用于扩展Web服务器功能的Java类。它们是Java EE(企业版)的...
Java Servlets是Java EE平台中的一个核心组件,用于构建动态Web应用程序。Servlets是一个服务器端的Java类,它扩展了Web服务器的功能,使得服务器能够处理HTTP请求并返回响应。本编程指南将深入探讨Java Servlets的...
Murach's Java Servlets and JSP, 2nd Edition.高清文字版,并加入了书签--part2
Java Servlets编程指南
Murach's Java Servlets and JSP, 2nd Edition.高清文字版,并加入了书签--part1
第1章 servlet概述第2章 Java Web服务器第3章 第一个servlet 第4章 servlet链第5章 servlet-side Includes 第6章 会话管理第7章 安全性 第8章 HTML表单第9章 在servlet中使用JDBC 第10章 applet与servlet的通信第11...
Murach's Java Servlets and JSP, 3rd Very good introduction on servlet and jsp.
这个压缩包文件集合包含了一系列与Java Servlets相关的源代码示例,覆盖了多个章节,从基础到进阶,帮助开发者深入理解并实践Servlets编程。 首先,我们来看看每个章节的主题可能涉及的知识点: 1. **chapter05....
### 静态分析在Java Servlets与JSP中的应用 #### 概述 本文档主要探讨了如何通过静态分析技术来确保基于Java Servlets和JSP开发的Web应用程序的行为符合预期。具体而言,该研究关注于两个核心问题:一是确保所有...
本教程的压缩包文件"JavaServlets_shishuo.chm"很可能包含了详细的章节,讲解了上述知识点。通过阅读,你将能够理解和实践Servlets编程,为Java Web开发打下坚实基础。建议结合实际项目进行学习,以便更好地理解和...
### Murach's Java Servlets and JSP 第二版 关键知识点概述 #### 一、绪论:Java Web 开发入门 - **Java Web 开发概述**:本书首先介绍了使用 Java 进行 Web 开发的基本概念,包括 Java 在 Web 开发中的角色以及...
### Java for the Web with Servlets: A Comprehensive Overview #### Introduction "Java for the Web with Servlets, JSP, and EJB: A Developer’s Guide to J2EE Solutions" by Budi Kurniawan is a ...
Java开发指南-Servlets和JSP篇是一份深入讲解Java Web开发的重要资料,主要涵盖了Servlets和JSP(JavaServer Pages)这两个核心技术。在Web应用开发领域,Servlets和JSP是构建动态网站和Web服务的基石,尤其对于后端...