知识大全 Servlet和JSP迈上新台阶
Posted 知
篇首语:路曼曼其修远兮,吾将上下而求索。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Servlet和JSP迈上新台阶相关的知识,希望对你有一定的参考价值。
Servlet和JSP迈上新台阶 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
即将面世的J EE 提供用Java开发Web应用程序的新的Servlet 和JavaServer Pages (JSP) 技术 本文展示了这两种技术的新特性 并在适当的地方提供每个特性的示例代码 本文假设读者熟悉以前的 Servlet 和JSP 版本 给出的例子已用Tomcat (包含在Java Web Services Developer Pack 中)进行了测试 Servlet和JSP毫无疑问是两种应用最广的J EE技术 Servlet技术是用Java进行Web应用编程的基础 也是JSP的基础 但是 servlet编程可能会非常麻烦 特别是当你不得不发送一个没多少代码的长HTML页面时更是如此 每个HTML标记必须嵌入到字符串中 用PrintWriter对象的显示方式发送 是一种工作单调乏味而烦人的工作 使用servlet的另一个缺点是每一处改变都需要servlet程序员介入 Sun公司了解到这一问题之后便开发了JSP作为解决方案 在JSP中 程序员和页面设计员的分工变得容易多了 并且当JSP页面更改时会自动进行编译 不过请注意 JSP是servlet技术的一个扩展 而不是废弃servlet 在实际应用当中 servlet和JSP页面一起使用 Servlet 的新特性 Servlet 提供了几个新类 且不支持javax servlet SingleThreadModel接口 这一版本只支持HTTP 所以Servlet 应用程序不适用于HTTP 客户程序 版增加了请求监听器和请求属性监听器 并能在一个应用程序中将servlet用作欢迎页面 另外 Servlet 还提供了更好的ServletRequest和RequestDispatcher对象 并更好地支持国际化 此外 现在是根据模式而不是文档类型定义(document type definition DTD)文件来验证部署描述符是否有效 这就意味着支持部署描述符的可扩展性 下面具体说明Servlet 的新特性 请求监听器和请求属性监听器 Servlet 增加了servlet上下文相关监听器和会话相关监听器 Servlet 增加了新的javax servlet ServletRequestListener和javax servlet ServletRequestAttributeListener两种接口 它们会通知你与Request对象有关的事件 如果你对每个Request对象的初始化和撤消感兴趣 你可以实施ServletRequestListener接口 这个接口有两个方法 requestInitialized()和requestDestroyed() 当需要一个Request对象时 servlet容器便调用requestInitialized方法 当不再需要Request对象时 servlet容器便调用requestDestroyed方法 这两个方法都从servlet容器接收一个javax servlet ServletRequestEvent对象 可以从ServletRequestEvent实例获得servlet上下文和servlet请求 第二个监听器接口ServletRequestAttributeListener处理Request对象属性的添加 更改和删除 该接口有以下方法 attributeAdded 向Request对象添加新属性时由servlet容器调用 attributeRemoved 从Request对象中删除属性时由servlet容器调用 attributeReplaced Request对象中现有属性值被替换时由servlet容器调用 这三个方法从servlet容器获得javax servlet ServletRequestAttributeEvent类的一个实例 ServletRequestAttributeEvent类扩展了ServletRequestEvent类 并添加了两个新方法 getName和getValue getName方法返回触发事件的属性的名称 getValue返回属性的值 代码清单 给出这两个新的监听器的示例类 当servlet容器调用方法时二者都显示方法名 监听器经过编译后 它们的类文件必须被部署到WEB INF/classes目录下 ServletRequest中的新方法 在Servlet 中 javax servlet ServletRequest接口增加了 个新方法 getRemotePort 返回发送请求的客户机或最后一个代理服务器的Internet Protocol(IP)源端口 getLocalName 返回从中接收请求的IP接口的主机名 getLocalAddr 返回从中接收请求的接口的IP地址 getLocalPort 返回从中接收请求的接口的IP端口号 请注意 在Servlet 中 getServerName和getServerPort方法返回的值就是现在getLocalName和getLocalPort返回的值 在 版中 getServerName和getServerPort已重新定义 欲了解更多的信息 请查看API文档 将一个JSP页面中的代码示例如下 out println( <br>Remote Port : + request getRemotePort()); out println( <br>Local Name : + request getLocalName()); out println( <br>Local Addr : + request getLocalAddr()); out println( <br>Local Port : + request getLocalPort()); 该代码生成这样的内容 Remote Port : Local Name : localhost Local Addr : Local Port : 请求调度程序的新特性 使用请求调度程序可将当前请求传递给一个新的资源 或从当前页面引入另一个资源 Servlet 增加了一些属性 它们将被添加到传递给另一个资源的一个Request对象上 javax servlet forward request_uri javaxntext_path javax servlet forward servlet_path javax servlet forward path_info javax servlet forward query_string 如果一个Request对象未被传递 则这些属性的值为null 另一方面 在所传递来对象的资源中这些属性将具有非null值 当某一个资源必须只能通过另一个资源调用而不能直接调用时 这些属性值很有用 举个例子 在一个叫做myApp的Context(上下文)中有一个名为ModernServlet的servlet ModernServlet被传递给TargetServlet 在TargetServlet中 显示代码清单 中的代码 myApp的部署描述符包含以下和元素 <servlet> <servlet name>Modern</servlet name> <servlet class>ModernServlet </servlet class> </servlet> <servlet mapping> <servlet name>Modern</servlet name> <url pattern>/Modern</url pattern> </servlet mapping> <servlet> <servlet name>Target</servlet name> <servlet class>TargetServlet </servlet class> </servlet> <servlet mapping> <servlet name>Target</servlet name> <url pattern>/Target</url pattern> </servlet mapping> 下面是调用ModernServlet时控制台显示的结果 javax servlet forward request_uri : /myApp/Modern javaxntext_path : /myApp javax servlet forward servlet_path : /Modern javax servlet forward path_info : null javax servlet forward query_string : null 将过滤器用于请求调度程序 Servlet 在部署描述符中添加了一个新的元素 以便servlet程序员决定是否将过滤器(filters)应用于请求调度程序 元素的值可以是REQUEST(默认值) FORWARD INCLUDE和ERROR REQUEST 如果请求直接来自客户机则使用过滤器 FORWARD 如果请求正由请求调度程序进行处理 表示与或相匹配的Web组件使用传递调用 则使用过滤器 INCLUDE 只有在请求正由请求调度程序进行处理 表示与或相匹配的Web组件使用包含(include)调用时 才使用过滤器 ERROR 只有在请求正由错误页面机制处理为一个与元素相匹配的错误资源时才使用过滤器 Servlet 只支持HTTP 客户机 Servlet 既支持HTTP 又支持HTTP 而Servlet 与Servlet 不同 它只支持HTTP 客户机 作为过渡 HTTP/ 状态码 (暂时建议)仍然存在 而且仍然由javax servlet HttpServletResponse接口中的SC_MOVED_TEMPORARILY表示 HTTP 具有Found的状态码 它由HttpServletResponse接口中的静态SC_FOUND表示 Servlet用作欢迎页面 在Servlet 中 你可以在部署描述符中使用元素列出欢迎文件 当收到一个不完整的URL时将显示的文件 但是 在Servlet 中 在元素中只能使用HTML文件或JSP文件 在Servlet 中 如今可以将一个servlet用作欢迎页面 下例为一个叫做Modern的servlet 它的类为ModernServlet class 并已被映射到path /Modern <servlet> <servlet name>Modern</servlet name> <servlet class>ModernServlet </servlet class> </servlet> <servlet mapping> <servlet name>Modern</servlet name> <url pattern>/Modern</url pattern> </servlet mapping> <wele file list> <wele file>Modern</wele file> </wele file list> 此时 若用户键入诸//domain/context/(不带资源文件)的URL时 就会调用ModernServlet 对国际化的新支持 在Servlet 中 没有办法直接告诉客户浏览器应当使用什么字符编码 要实现这一目的 你必须把一个java util Locale对象传递给javax servlet ServletResponse接口的setLocale方法 如下所示 response setLocale(locale); 这意味着你必须首先创建一个Locale对象 另外一种办法是 在Servlet cha138/Article/program/Oracle/201311/18031相关参考
为扎实有效地推进“百村千户万元增收”行动,以“四群”教育工作为契机,找准发力点,带动全方位,采取“六统一”,推动玉米产业工作再上新台阶。 一是统一选地。综合考虑玉米株高大、根系多、分枝多等因素,为实
伊河鲂鱼是伊河流域嵩县境内特有的鱼类稀有品种,嵩县陆浑鱼厂是伊河鲂鱼繁育基地,由于技术原因,伊河鲂鱼繁育工作一直在省水科院进行,为了实现“自繁自育,补充资源,打造品牌”这一目标,嵩县陆浑鱼种厂职工从伊
伊河鲂鱼是伊河流域嵩县境内特有的鱼类稀有品种,嵩县陆浑鱼厂是伊河鲂鱼繁育基地,由于技术原因,伊河鲂鱼繁育工作一直在省水科院进行,为了实现“自繁自育,补充资源,打造品牌”这一目标,嵩县陆浑鱼种厂职工从伊
JSP和Servlet配置详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首先是下载工具
JSP和Servlet的性能优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在本文中带领你学
在jsp和servlet的开发中今天自己做的一个小例子中出现了中文乱码问题用了许多方法发现还是解决不了最后我用了过滤器才算终结 此方法总结如下在jsp页面中使用<%@pagepageEnc
浅析Servlet和Jsp中的多国语言显示 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 因为一
知识大全 Tomcat下JSP、Servlet和JavaBean环境配置
Tomcat下JSP、Servlet和JavaBean环境配置 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
高性能、高弹性JSP和Servlet性能优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 你的
高性能高弹性JSP和Servlet性能优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 你的J