.NET C#到Java没那么难,Servlet篇

小恐龙
• 阅读 1271

.NET C#到Java没那么难,Servlet篇

.NET C#到Java没那么难,Servlet篇

前言

.NET C#到Java没那么难,都是面向对象的语言,而且语法还是相似的,先对比一下开发环境,再到Servlet,再到MVC,都是一样一样的,只是JAVA的配制项比较多而已,只要配好一个,后面都是copy,简直so easy,而且用myeclipse可以省一些配制

Java与.NET的区别不在它们的本身,最大的区别在于他们背后的力量,相信大家都能感觉得到,我就不多说。

系列目录

一、.NET C#**到Java没那么难,开发环境篇**

二、.NET C#到Java没那么难,Servlet篇

三、.NET C#到Java没那么难,MVC篇

四、.NET C#**到Java没那么难,MVC框架篇**

五、.NET C#**到Java没那么难,DB框架篇**

六、.NET C#**到Java没那么难,Nosql框架篇**

七、.NET C#**到Java没那么难,微服务篇**

八、.NET C#**到Java没那么难,大数据篇**

**.NET C#**到Java没那么难,Servlet篇****

目录

1. Servlet 和 Ashx(**一般处理程序**)

2. Servlet 和 JSP

3. Servlet的生命周期

4. Java Filter 和 HttpModule,ActionFilter

5.JSTL,EL 和 Razor 表达式

6. JSP内置9大对象,可和ASP.NET 对应

7. Servlet 示例代码

8. Servlet 国际化

9. 扩展阅读

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框架都比较成熟了.

.NET C#到Java没那么难,Servlet篇

2. Servlet 和 JSP

jsp最终也是转化被成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() 方法

 .NET C#到Java没那么难,Servlet篇

4. Java Filter 和 HttpModule,ActionFilter

1).Java Filter

Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。

Java Filter过滤器

2).HttpModule 和 ActionFilter

HttpModule 是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类的实例。
out对象是JspWriter类的实例,是向客户端输出内容常用的对象
response和out

3).session对象

session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个
WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession
类的实例.

4).page和pageContext对象

page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是
说他可以访问到本页所在的SESSION,也可以取本页面所在的application的
某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫

page和pageContext

5).application对象

application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器
的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前
后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何
地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和
关闭决定了application对象的生命。它是ServletContext类的实例。

6).exception对象

exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产
生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,
否则无法编译。他实际上是Java.lang.Throwable的对象

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

.NET C#到Java没那么难,Servlet篇

8. Servlet 国际化

在我们开始之前,先来看看三个重要术语:

  • 国际化(i18n):这意味着一个网站提供了不同版本的翻译成访问者的语言或国籍的内容。
  • 本地化(l10n):这意味着向网站添加资源,以使其适应特定的地理或文化区域,例如网站翻译成印地文(Hindi)。
  • 区域设置(locale):这是一个特殊的文化或地理区域。它通常指语言符号后跟一个下划线和一个国家符号。例如 "en_US" 表示针对 US 的英语区域设置。

当建立一个全球性的网站时有一些注意事项。本教程不会讲解这些注意事项的完整细节,但它会通过一个很好的实例向您演示如何通过差异化定位(即区域设置)来让网页以不同语言呈现。

Servlet 可以根据请求者的区域设置拾取相应版本的网站,并根据当地的语言、文化和需求提供相应的网站版本。以下是 request 对象中返回 Locale 对象的方法。

java.util.Locale request.getLocale()

检测区域设置

下面列出了重要的区域设置方法,您可以使用它们来检测请求者的地理位置、语言和区域设置。下面所有的方法都显示了请求者浏览器中设置的国家名称和语言名称。

序号 方法 & 描述
1 String getCountry()
该方法以 2 个大写字母形式的 ISO 3166 格式返回该区域设置的国家/地区代码。
2 String getDisplayCountry()
该方法返回适合向用户显示的区域设置的国家的名称。
3 String getLanguage()
该方法以小写字母形式的 ISO 639 格式返回该区域设置的语言代码。
4 String getDisplayLanguage()
该方法返回适合向用户显示的区域设置的语言的名称。
5 String getISO3Country()
该方法返回该区域设置的国家的三个字母缩写。
6 String getISO3Language()
该方法返回该区域设置的语言的三个字母的缩写。

深入理解Java国际化

9. 扩展阅读

Java程序员学C#基本语法

C#与Java功能比较

C#与Java功能比较2

C#与Java真假泛型

Servle教程

未完,待续,欢迎评论拍砖

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Charles14 Charles14
3年前
.NET C#到Java没那么难,DB篇
.NETC到Java没那么难,DB篇.NETC到Java没那么难,DB篇前言.NETC到Java没那么难,都是面向对象的语言,而且语法还是相似的,先对比一下开发环境,再到Servlet,再到
Alonso095 Alonso095
3年前
.NET C#到Java没那么难,MVC篇
.NETC到Java没那么难,MVC篇.NETC到Java没那么难,MVC篇最典型的JAVAMVC就是JSPservletjavabean的模式。比较好的MVC,老牌的有Struts、
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
小恐龙
小恐龙
Lv1
步月如有意,情来不自禁。
文章
5
粉丝
0
获赞
0