Javaweb 基础

javaweb 一共讲三种组件

1 servlet

2 filter

3 listener

启动服务器

总结:

1可以用localhost:8080 来访问

 1)ROOT 文件夹下面的index.jsp

或者是在【catalina/localhost】创建一个ROOT.xml 文件里面写<Context  docBase="E:\new"/>并且E:\new 里面的文件必须是index开头的否则就访问不了了(ROOT   其实相当于是context path="")

2)localhost:8080/path/1.html

path-----context path="/path"

要想去掉后面的1.html 必须要建一个文件夹,WEB-INF里面有web.xml 文件里面配置的是

<welcome-file-list>
        <welcome-file>1.html</welcome-file>
    </welcome-file-list>

 

是访问的是ROOT下面的index.jsp,之所以会访问ROOT下面的index.jsp是因为

 

在服务器当中怎么配置才能让外界访问到web 资源呢,称为web服务的虚拟目录的映射

1 首先先创建一个项目随便在哪个盘

 

 

 

先创建一个名字为new 的项目

在server.xml文件中配置Context context 就代表web 应用

<Context path ="/xuduan" docBase="E:\new"/>

Path 代表的是web项目对外访问路径是什么,path="/xuduan"由于在硬盘中没有这个目录,所以叫虚拟目录,doBase 表示的是文件的位置

 

当修改完配置文件以后一定要重新启动服务器

但是这种情况下有一个问题就是每一次都要重新启动服务器

下面这几种方式是不用启动服务器的

方式一:在context.xml 文件中配置被所有的web工程所共享的,这种方式是很危险的不建议使用。

<?xml version='1.0' encoding='utf-8'?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- The contents of this file will be loaded for each web application -->
<Context>

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->

    <!-- Uncomment this to enable Comet connection tacking (provides events
         on session expiration as well as webapp lifecycle) -->
    <!--
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
    -->

</Context>

方式二:在这个路径【catalina/host】下任意建一个文件xxx.xml ,这个文件的名称就是xxx,会用做context path

xxx.xml 就可以了

<Context  docBase="E:\new"/> 这个时候没有必要再写path="" 属性了,因为文件的名称就是path,首先要把原来在conf/server.xml文件中配置的内容(<Context path ="/xuduan" docBase="E:\new"/>)删除掉,要么它仍然会找原来的路径,现在的文件就找不到了,删除掉以后重新启动服务器。

我又复制一个

里面的内容和a.html 的内容是一样的

不用重新启动服务器可以直接访问

我再复制一个

内容和a.xml中的内容是一样,同样也是不用启动服务器。

还可以写成这种:

也同样不需要启动服务器,

还可以用这种方式

ROOT.xml的文件的内容和a.xml 的文件内容是一样的

但是下面这种访问方式是有一个条件的,就是E:/new 里面的文件的名称必须是index 开头的,eg:index.html

,在【catalina/host】里面写一个和a.xml 文件内容相同的文件名为ROOT.xml 的这种方式和localhost:8080 访问

web.xml 配置里面的index.html index.hml index.jsp 的这种方式不能共存,只能保留一种方式,一旦把E:/new 里面的文件改为了不是index 开头的其他文件名,就访问不了了

只能用下面这种方式

才可以访问。

这个时候重新解压一个全新的tomcat 服务器重新配置

<Context path ="" docBase="E:\new"/>如果的path路径为空的话就是默认的访问路径。

重新启动服务器,

由于是默认的所以可以直接访问

这样就不行了,因为把conf/web.xml中的配置的index.html index.hml index.jsp 覆盖了,所以只能是保留一个

tomcat 是自动管理web 应用的,只要把web应用往webapps 下面一放它就会在启动服务器的时候自动加载都不需要重新启动服务器

对于静态的web资源

如果web应用程序中一定要在xuduanyang的文件夹里面建一个WEB-INF 的目录

在WEB-INF里面建一个classes 目录在classes 目录里面建class文件

 

在WEB-INF 里面建一个lib 包

在WEB-INF下面创建一个web.xml

首先想把index.html 配置成名称为xuduanyang应用的首页

要在web.xml 文件中配置

<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

    <welcome-file-list>
        <welcome-file>1.html</welcome-file>
    </welcome-file-list>

</web-app>

重新启动服务器

去掉了1.html

默认就直接访问了

这个仍然可以访问如下

和上面是不影响的,由于配置了路径如下

(去掉了项目名称)如果想把xuduanyang 的项目直接配置成默认的方式,通过localhost:8080 可以直接访问的方式

重新启动服务器

对比

<Context path ="" docBase="E:\software\apache-tomcat-7.0.82-windows-x64\apache-tomcat-7.0.82\webapps\xuduanyang"/>和 <Context path ="" docBase="E:\new"/> 两种方式的唯一不同点就是文件的如果把new 文件夹下面也包含WEB-INF 文件夹

就和xuduanyang 项目一样了,都可以直接通过localhost:8080直接访问

并且WEB-INF 文件夹下面含有web.xml,不用非得有classes lib文件夹

这样就可以了

如果把端口号改为80

重新启动服务器

localhost 就可以了

总结

配置虚拟主机

由于在server.xml 文件中配置了localhost

所以才可以通过

localhost 访问

现在我们再配置一个虚拟主机

 <Host name="www.sina.com"  appBase="E:/sina"> </Host>

在e盘的sina 文件夹里面创建news文件夹,相当于是web 应用

      <Host name="www.sina.com"  appBase="E:/sina">

          <Context path ="/mail" docBase="E:\sina\news"/>

   </Host>

重新启动服务器

仅仅是配置这个是不能访问的,相当于新浪被我干掉了,所以要搞清楚网址访问时的访问顺序

首先是当在地址栏中输入www.sina.com.cn 的时候,会访问dns 服务器,看这个网址是否是在dns 服务器上注册是否有对应的ip,如果有才有访问新浪的网址,

网址访问不了的原因有两种有可能是DNS挂了,还有可能是网站挂了

判断是网站挂了还是主机挂了

ping www.sina.com.cn

这个时候可以用

https://218.30.66.248可以绕过dns验证,进行对新浪访问

但是有的时候访问不了

C:\Windows\System32\drivers\etc

docBase="E:/sina/news"/> 和docBase="E:\sina\news"/> 这两种写法都是可以的

重新启动服务器

127.0.0.1  www.sina.com  由于我配置的是本机的ip,如果局域网想访问我的ip,必须要在他的电脑上也在hosts 里面也配置一个映射,映射到我的ip就可以了,或者到dns 花钱注册这个域名就可以了,就可以用公网访问了

如果只想用

http://www.sina.com 直接访问的话,步骤就是首先把/mail path="" 默认的,并且把1.html 改为默认的首页就可以了

 <Host name="www.sina.com"  appBase="E:/sina">
	      <Context path ="" docBase="E:/sina/news"/>
</Host>

这样就可以了

就可以直接访问了

web 资源的访问过程

当点击www.sina.com.cn 去连接新浪的服务器的时候,当连接上新浪服务器以后,会向新浪的服务器发送http请求,

                                                                                              

                                                             

http响应在下面可以看见

把应用打成一个war 包

打成一个war 包服务器会自动解压

把打成的war 包放到webapps 下面去

只要服务器开着,大概过了几秒中,就把war 包解压了

配置context 元素的reloadable 元素,让tomcat 自动加载后的web 应用

 <Host name="www.sina.com"  appBase="E:/sina">
          <Context path ="" docBase="E:/sina/news" reloadable="true"/>

 </Host>

reloadable="true" 表示只是针对这个单一项目,java代码更改以后自动发布,只要一改动就自动加载,小项目可能没有什么问题,但是大项目很容易导致内存溢出什么的风险。

当时如果是在

conf/context.xml 文件中,如果更改了

如果在context 上面配置

由于在context.xml文件中配置的时候如果写reloadable="true" 意思就是对所有web 项目都是生效的,只要是所有的项目中的java文件更改了,项目都会自动加载,最好是不要用。

第一种情况就是宋美龄产生一个公钥和私钥,宋美龄给蒋介石发一个公钥,即使被拦截下来了,也没有关系,因为他没有私钥也没有办法解开。

还有一种情况就是,坏人把宋美龄发给蒋介石的公钥截取下来了,坏人自己生成了一对公钥和私钥,坏人把他自己的公钥发给了蒋介石,然后蒋介石用坏人发给他的公钥生成了加密的文件,准备发给宋美龄,这个时候又被坏人截取下来了,坏人用他的私钥把文件截取下来了,解开了,所以还不安全的,问题就是蒋介石确保公钥是否是宋美龄的,所以密码学研究到最后是没有安全可言的,所以现在必须有一个信任点,这个信任点就是CA,在当访问银行网站时首先就是出示数字证书,银行出示信任证书的目的就是把公钥给你了,当你填写用户名密码的时候就是用这个公钥来生成加密文件,但是还是要验证一下这个数字证书是不是银行的,浏览器内部带了校验功能

 

 

 




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值