`

Servlet注意点

阅读更多
1:application和ServletContext的关系
application是JSP九大隐式对象之一,所谓JSP隐式对象就是不需要你自己去new,就存在于页面上的对象。appleiction就是javax.servlet.ServletContext类的实例。

ServletContext application = null;
application = pageContext.getServletContext();

2.request.getParameterValues与request.getParameter的区别:
request.getParameterValues(String   name)是获得如checkbox类(名字相同,但值有多个)的数据。   接收数组变量,如checkobx类型    
request.getParameter(String   name)是获得相应名的数据,如果有重复的名,则返回第一个的值. 接收一般变量,如text类型
注意:Enumeration enu=request.getParameterNames();//获得所有的参数名

3.ServletContext与ServletConfig的区别
ServletContext用于当前虚拟共享,简称上下文
ServletConfig用于单个servlet初始化参数
ServletConfig一般只用于获取Servlet的初始化参数,而ServletContext的作用是与Web Container交互,除了可以用于获取Web Application的全局初始化参数外,还可以获取Servlet的元数据,设置共享属性,获取属性值,获取外部资源等,另外当Web Application使用分布式部署时(在web.xml 中使用distributable元素)ServletContext的作用范围就只有单个虚拟机而不是整个Web Application

4.重定向:URL重写,Cookie,隐藏表单域以及HttpSession
    URL重写:XXX.jsp?id=123
    隐藏表单域:通过hidden,在另外一个页面获取request.getParameter(obj);
    Cookie:Cookie myCookie=new Cookie("code",""+validationCode);
           response.addCookie(myCookie);
           获取:Cookie cookies[] = request.getCookies();
           遍历cookies,比对code=cookies[i].getValue();
    Session:httpSession session=request.getSession();
            setAttribute("code",validationCode);
            HttpSession session=request.getSession();
            session.getAttribute("code");
5.获取路径
JSP中获得当前应用的相对路径和绝对路径:
根目录所对应的绝对路径:request.getRequestURI()
文件的绝对路径:application.getRealPath(request.getRequestURI());
当前web应用的绝对路径 :application.getRealPath("/");
取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent();

Servlet中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getServletPath();
文件的绝对路径:request.getSession().getServletContext().getRealPath
(request.getRequestURI());  
当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
ServletContext对象获得几种方式:
       Javax.servlet.http.HttpSession.getServletContext()
       Javax.servlet.jsp.PageContext.getServletContext()
       Javax.servlet.ServletConfig.getServletContext()

例如:
servlet中几个获取路径方法的对比
如果请求的URL为:http://localhost:8080/webapp/login
那么分别调用request.getContextPath( )、request.getServletPath( ) 、
request.getURI( )、request.getURL( )分别返回什么路径?
这几个方法都是在HttpServletRequest接口中定义的。

1.request.getURI( )返回HTTP请求行中请求URI的部分。上例中该方法将返回/webapp/login。

2.request.getContextPath( )返回web应用程序的路径,上例中该方法将返回/webapp。

3.request.getServletPath( ) 返回Servlet的路径。上例中该方法将返回/login。

4.request.getURL( )返回请求的URL,上例中即为http://localhost:8080/webapp/login


encodeURL
response.sendRedirect(response.encodeURL(url))的好处就是他能将用户的session追加到网址的末尾,也就是能够保证用户在不同的页面时的session对象是一致的.
这样做的目的是防止某些浏览器不支持或禁用了COOKIE导致session跟踪失败 。
通常,会话管理是通过服务器将 Session ID 作为一个 cookie 存储在用户的 Web 浏览器中来唯一标识每个用户会话。如果浏览器不支持 cookies,或者将浏览器设置为不接受 cookies,我们可以通过 URL 重写来实现会话管理。
  实质上 URL 重写是通过向 URL 连接添加参数,并把 session ID 作为值包含在连接中。然而,为使这生效,你需要为你的 servlet 响应部分的每个连接添加 session ID 。
   把 session ID 加到一个连接可以使用一对方法来简化:response.encodeURL() 使 URL 包含 session ID,如果你需要使用重定向,可以使用 response.encodeRedirectURL () 来对 URL 进行编码。
  encodeURL () 及 encodeRedirectedURL () 方法首先判断 cookies 是否被浏览器支持;如果支持,则参数 URL 被原样返回,session ID 将通过 cookies 来维持。
注意,如果你想让这个例子能在关闭了 cookies 的浏览器中工作,你的 JSP 引擎必须支持 URL 重写。

一句话:在客户端禁用了cookie后,如果不用这个方法来ecnode一下URL,那么session就无法使用。 加了此方法后会在地址后面添加一个jsession=*******的信息,即使客户端没有开cookie,依然能通过此信息来找到session,完成业务。


其他看附件
分享到:
评论

相关推荐

    Tomcat开发JSP和Servlet需要注意的问题.doc

    Tomcat开发JSP和Servlet需要注意的问题.doc

    jsp 注册<servlet>方法说明

    值得注意的是其中"test."表示两种意思:1)类文件既HelloWorld.class在classes文件夹下的test文件夹内; 2)HelloWorld.java内定义HelloWorld类必须打包与test包内,既需有一行package test; --&gt; &lt;/servlet&gt; &lt;servlet...

    Java™ Servlet 规范.

    1.4 Servlet 与其他技术的比较 ........................................................................................................................14 1.5 与 Java 平台企业版的关系 ......................

    android servlet使用JSON交换信息示例

    android端和servlet端使用JSON交换数据信息的简单小例子,部分代码在JSP环境下实现,搞过Java WEB开发(JSP)的程序员,应该对Servlet不陌生,Json目前也是流行技术,所以说这个例子将Android、Json、Servlet三者结合...

    servlet-3_1官方指南

    servlet官方指南,注意是英文版的。但这是一手资料,比翻译过来的意思准确多了

    Servlet和JSP(JAVAEE基础).zip

    Java Servlet讲解

    手工开发Servlet的步骤

    关于开发servlet的步骤和主要事项,开发过程中应注意的一些问题。

    Servlet模板文件

    替换servlet模板文件的方法: (1)找到MyEclipse安装...(3)用压缩工具打开,注意是打开不是解压这个jar包; (4)找到templates文件夹,进入templates文件夹,可以看到里面有一个Servlet.java文件; (5)替换即可。

    servlet3.0文件上传 01.zip

    本工程用于借助Servlet3.0实现文件上传 本工程编码方式:UTF-8 注意: 1、在上传文件前请在计算机C盘新建一个名为“upload”的文件夹,否则会出现如下异常:java.io.IOException: The temporary upload location [C...

    servlet笔记

    servlet笔记,用于从前端jsp传递数据到服务器,还有一些需要注意的要点,新手可以看看

    java-servlet-api.doc

    Java Servlet API说明文档 绪言 这是一份关于2.1版JavaServletAPI的说明文档,作为对这本文档的补充,你可以到http://java.sun.com/products/servlet/index.html下面下载Javadoc格式的文档。 谁需要读这份文档 这份...

    java Servlet+Mybatis+Layui实现的CRM客户关系管理系统

    java servlet+mybatis+layui+jquery+echarts 登录地址:http://localhost:8080/crm/pages/login.jsp 账号密码:zuidaima 123 登录界面 市场活动 添加市场活动 线索管理 关联市场活动 线索转换 客户管理 联系人 添加...

    简单的jsp+servlet+javaBean访问mysql数据库

    jsp+servlet+javaBean访问数据库的简单例子,但是类设置非常巧妙,大家注意。

    JSP和Servlet

    JSP和Servlet编程应该注意的问题

    servlet操作步骤

    使用servlet的总体流程以及一切要注意的事项,不难,希望对大家有所帮助。

    servlet api 源码jar包 Mac版

    Mac电脑: servlet jar包已在eclipse开发工具中使用测试OK,windows电脑未测试过,在下载过程中请注意查看适合版本。

    文件上传 JSP + Servlet

    JSP+servlet实现的文件上传, 有详细注释, 需要MyEclipse5.5或更高

    android通过servlet与服务器验证用户信息

    1注意manifext.xml的权限 2 servlet project的类一定要extends httpservlet 3 servlet project中,com是包名,所以Tomcat是...classes/com/xxx.class 4 192.168.0.107是电脑的IP,需要手机电脑连接的是同一个wifi,...

    采用jsp+javabean+servlet+mysql(界面美观)

    A. 本留言本采用jsp+javabean+servlet+mysql B. 本系统运行环境: windows/linux+ jdk1.4+resin(或tomcat)+jdbc+mysql 5.0 目录结构如下: 本版本数据库采用的是MYSQL,使用JDBC驱动,所以要求有MYSQL的JDBC...

Global site tag (gtag.js) - Google Analytics