.NET C#与Java比较——Servlet
目录1. Servlet 和 Ashx(一般处理程序)2. Servlet 和 JSP3.?Servlet的生命周期4. Java Filter 和 HttpModule,ActionFilter5.JSTL,EL 和 Razor 表达式6. JSP内置9大对象,可和ASP.NET 对应7. Servlet 示例代码8. Servlet?国际化?? 1. Servlet 和 Ashx(一般处理程序)Java Web和ASP.NET也是有相似的,java web的核心是Servlet,Jsp其实本质都是Servlet,而Servlet的流程可以比较清晰看到整个前后台是怎么工作的,类似.NET的ashx一般处理程序,Java是MVC的主要倡导者,随着web技术发展,Servlet主要被当作Controler使用,Jsp作为View使用,这在许多MVC框架有所体现.得益于开源社区的活跃,流行的Java MVC框架都比较成熟了. ? 2. Servlet 和 JSPjsp最终也是转化被成Servlet,.java就是一个Servlet 当一个JSP文件第一次被请求的时候,Tomcat首先会把这个JSP文件转换成一个Java源文件。在转换过程中如果发现JSP文件有语法错误,转换过程将中断,并向服务端和客户端输出出错信息。如果转换成功,Tomcat用javac把该Java源文件编译成相应的.class文件并将该.class文件加载到内存中。 ? 3.?Servlet的生命周期1).Servlet生命周期分为三个阶段: 1,初始化阶段:调用init()方法 2,响应客户请求阶段:调用service()方法 Service()方法内部对请求的类型(get/post)进行了判断,自动调用doPost/doGet 3,终止阶段:调用destroy()方法 2).Servlet的单例多线程: 单例:Servlet只在用户第一次请求时被实例化,并且是单例的,在服务器重启或关闭时才会被销毁。 多线程:当请求到达时,Servlet容器(Tomcat...)通过线程池中可用的线程给请求者并执行Service方法,每个线程执行一个单一的 Servlet 实例的 service() 方法 ? 4. Java Filter 和 HttpModule,ActionFilter1).Java FilterFilter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet,静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。 它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。 Java Filter过滤器 2).HttpModule 和 ActionFilterHttpModule 是asp.net WebForm 的Filter 浅谈HttpModule ActionFilter 是 asp.net MVC 的Filter 四种基本Filter概述 ? 5.JSTL,EL 和 Razor 表达式把代码标签化,表达式化,让前端人员也能维护,实现前后端分离 1).?JSTL标签JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。 JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。 2).EL表达式EL(Expression Language)? 目的:为了使JSP写起来更加简单。 它提供了在 JSP 中简化表达式的方法。它是一种简单的语言,基于可用的命名空间(PageContext?属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。 3).Razor这里对比的是Razor表达式 ? 6. JSP内置9大对象,可和ASP.NET 对应1).request对象客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。 2).response和out对象response对象包含了响应客户请求的有关信息,它是HttpServletResponse类的实例。 3).session对象session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个 4).page和pageContext对象page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例 page和pageContext 5).application对象application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器 6).exception对象exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产 7).config对象config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象) 7. Servlet 示例代码1).Hello World 示例代码 // 导入必需的 java 库 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; // 扩展 HttpServlet 类 public class HelloWorld extends HttpServlet { private String message; public void init() throws ServletException { // 执行必需的初始化 message = "Hello World"; } public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { // 设置响应内容类型 response.setContentType("text/html"); // 实际的逻辑是在这里 PrintWriter out = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void destroy() { // 什么也不做 } } 2).WEB-INF/ web.xml 配制 <web-app> <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/HelloWorld</url-pattern> </servlet-mapping> </web-app> 3).然后运行tomcat,访问你的Servlet ? ? ? 8. Servlet?国际化在我们开始之前,先来看看三个重要术语:
当建立一个全球性的网站时有一些注意事项。本教程不会讲解这些注意事项的完整细节,但它会通过一个很好的实例向您演示如何通过差异化定位(即区域设置)来让网页以不同语言呈现。 Servlet 可以根据请求者的区域设置拾取相应版本的网站,并根据当地的语言、文化和需求提供相应的网站版本。以下是 request 对象中返回 Locale 对象的方法。 java.util.Locale request.getLocale()
检测区域设置下面列出了重要的区域设置方法,您可以使用它们来检测请求者的地理位置、语言和区域设置。下面所有的方法都显示了请求者浏览器中设置的国家名称和语言名称。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |