网站发布之道及JSP两种声明变量的区别

SHQ5785 发表于 2022/12/01 09:23:27 2022/12/01
【摘要】 一个完整的网站需要3个部分: 1.域名 2.空间 3.网页。其中,域名是网址;空间是存放网站程序的。www.weimingcloud.cn做了一下午的域名访问,在本地是可以的,但是在访问阿里云上的主机却出现了异常。令人费解,中午吃饭时还被老师嫌弃了一回,o(︶︿︶)o 唉!自己真的很水吗?自己犯了常识性的错误,IIS与tomcat都是web服务器,而自己却傻了吧唧的要给两者做关联,悲剧啊简直...

一个完整的网站需要3个部分: 1.域名 2.空间 3.网页。其中,域名是网址;空间是存放网站程序的。

www.weimingcloud.cn

做了一下午的域名访问,在本地是可以的,但是在访问阿里云上的主机却出现了异常。令人费解,中午吃饭时还被老师嫌弃了一回,o(︶︿︶)o 唉!自己真的很水吗?

自己犯了常识性的错误,IIS与tomcat都是web服务器,而自己却傻了吧唧的要给两者做关联,悲剧啊简直是!

1:服务的对象不同

  tomcat 做java web的服务器,iis为用微软开发的网站服务器。具体而言就是:tomcat支持Java开发的Web程序,它是Web服务器容器,支持:jsp,Servlet,Struts,Hibernate等,但不支持EJB;IIS是微软Windows自带的,支持ASP。

2:性能不同

  apache/iis在处理静态页面方面优于tomcat/jswdk。

iis,  apache, tomcat三者的共同点是都可以直接用作Web服务器,就是你看www网页就是把网页放到服务器上的。

区别:

iis和apache二者只能作web服务器(iis是ms出品的闭源产品,apache是apache.org出品的开源产品,性能好一点),而tomcat除过做web服务器外,还可以作应用服务器。

所谓应用服务器(App Server),这里主要是为Java EE的Web应用提供一个运行的容器。其实细分还可以分成按是否根据Java EE规范的版本支持看其支持到什么程度, 如Java EE 1.5 App服务器,Java EE 6 App服务器等),严格说来由于Tomcat本身不支持EJB,多数情况下它是作为运行Servlet/JSP的容器。

最后,也可以把Tomcat做成只有应用服务器的功能,与iis或apache进行连接,因为静态网页的解析后者会快一些。

​JSP两种声明变量的区别

在JSP中用两种声明变量的方法,一种是在<%! %>内,一种是在<% %>内。他们之间有什么区别呢?我们直接看一个JSP文件来理解。

代码如下:

<HTML>

<TITLE>JSP Declarations</TITLE>

<BODY>

<H1>JSP Declarations</H1>

<%! 

 int count = 0;      //声明在<%!>内的变量     

  void method(){}     

%>

<%

  int i= 0;         //声明在<% >内的变量

%>

<H1>

count:<%= ++count %></H1>

<br/>

<H1>i:<%= ++i %></H1>    
 

</BODY>

</HTML>

启动tomcat运行这个jsp会发现当我们不断刷新页面时count的值会不断增加 而i的值始终不变,也就是说定义在<%!%>内的变量会累加,而定义在<%%>内的变量不会累加。

这是为什么呢?

声明在<%! %>内的变量和方法是一个类内的变量和方法也就是成员变量和成员方法。声明在<%%>内的变量是一个方法的变量也就是局部变量。

我们学习JAVA的时候就知道成员变量会被多个对象共享,而局部变量单独对象访问。所以count会自动增加,i不对递增。

在这里还有个问题要告诉读者,如果在<% %>内添加一个method()方法那么该程序就会报错,其实原因不难想象,这样声明一个方法等于就是一个类里的方法里又声明了个方法。结果肯定是错误的。

注:jsp页面中<%! %>内定义的是全局变量。使用<%! %>定义的变量编译成servlet后成为servlet的私有成员变量,在servlet环境中,对于一个JSP页只允许有一个结果servlet的实例在运行和响应所有的页面请求。因此,在结果servlet中所有的成员变量可以被所有的请求所共享,所以只要成员变量没有重新赋值,下次访问该页面时仍然不变。而在<% %>中定义的变量编译成servlet后成为service()方法的一个本地变量,而service()方法中的本地变量只能每响应一次请求就重建一次。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请发送邮件至:cloudbbs@huaweicloud.com;如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。