(二)javaweb开发的常见概念总结(来自那些年的笔记)
目录
WEB开发相关知识
Web分为两种:
静态web资源:开发技术:HTML
动态web资源:JSP/Servlet、ASP、PHP等;其中,在java中,动态web资源开发技术统称为javaweb;
WEB服务器
什么是WEB服务器呢?
先考虑一个问题,我们开发出一个web资源,放在我们自己的电脑上,那么其他人想要访问这个web资源,应该怎么做呢?
首先,毋庸置疑,其他人是无法直接访问到我们电脑上的资源的,因为这些资源是属于本地的;因此,我们必须再开发一个网络程序,来当做跳板;让他们先访问这个网络程序,由网络程序来访问我们的本地文件;每开发一个web资源,都需要开发这样一个网络程序,这些网络程序是通用的;因此,有人帮我们开发好了——它们就是WEB服务器 ;
Tomcat服务器
不支持所有的J2EE规范(13种),仅支持JSP、Servlet规范 ;
其中http的默认端口是80,https的默认端口443;也就是说,当我们使用http协议的时候,在浏览器中输入地址时,如果没有指定端口号,则默认访问80端口;这也是我们将项目运行起来的时候,挂载80端口的原因,不然每次都得写端口号;
WEB应用程序
供浏览器访问的程序,通常简称为web应用。
一个WEB应用由多个静态WEB资源和动态WEB资源组成,如:
•HTML,css,JS文件
•Jsp文件、java程序,支持jar包
•配置文件等等….
•组成web应用的这些文件,我们通常放在一个目录下,这个目录称之为WEB应用所在目录;目录中的所有文件称为web应用;
配置WEB应用
Web应用开发好以后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚拟目录的映射 ;
- 方法一
这个过程在服务器的配置文件里面配置;(其中tomcat的配置文件在下面的目录中)
在HOST标签中,配置一个Context标签,一个Context就是一个web应用;改变了配置以后,需要重启服务器;
例子:
<Context path="/allbet" docBase="E:\web"/>
空格不可以随便打;docBase中配置的是Web应用所在目录,path配置的是虚拟目录,也就是在浏览器中打的地址;
现在,我们将Web应用配置好以后,通过Tomcat服务器访问这个web资源,地址就是:http://localhost:8080/allbet/1.html
方法二
方法一,有个致命的弊端,必须重启服务器,才能加载我们的后添加的Web应用;所有不再使用;
在Tomcat配置文件目录下,有一个Context文件,在这里配置我们的Web应用,但是这里配置的Web应用,将会被服务器上的所有的Web应用所共享;
方法三
Tomcat配置文件目录下,有一个Catalina文件夹,下面有一个localhost文件夹 ,我们在这里面新建一个Context.xml文件,在这里面配置的Web应用,会被服务器上面的所有应用共享;
方法四
Tomcat配置文件目录下,有一个Catalina文件夹,下面有一个localhost文件夹,我们在里面新建一个XML文件,在这个XML文件里面配置Context,这里的Context,不再需要我们去写虚拟路径,这里的虚拟路径就是我们的XML文件名;这种方法。不需要重启服务器;如果想要多层目录,就在XML文件的名字中加上#,用#拼接多层次的目录;
方法五
让tomcat自动映射
tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚拟目录。换句话说:tomcat服务器WebApps目录中的web应用,外界可以直接访问;他会将文件夹的名字,自定映射成虚拟目录;
配置缺省的WEB应用
将Web应用配置成缺省的;我们只需要将上面讲的【配置WEB应用-方法四】中的XML文件,命名为ROOT.xml 即可;这样,我们就不需要在细致的指定访问哪一个文件了。比如我们,不想再写明什么myWeb/1.html了。想在端口号后面直接输入1.html 就能访问到这个页面,就需要把1.html配置成缺省的;例如:http://localhost:8080/1.html
还有一种设置缺省的方法,就是在第一种的写Context标签,将path=”” 设为空白 ;也是缺省的一种配置方法
Web设置首页
首页就是一个web应用,在没指定具体访问哪一个页面的时候,显示的界面,在 web.xml 里面配置首页;
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
比如;我们的web应用叫mail,那么我们http://localhost:8080/mail/ 并没有指定访问mail的哪个页面,那么就会访问mail的首页;如果我们再把mail目录配置成缺省的,http://localhost:8080/ ,那么,这样就可以直接访问到我们的首页了,这就是Tomcat的首页实现原理;
web.xml文件
注意,写在web应用目录下WEB-INF目录下面的web.xml文档中的web资源,必须在与WEB-INF目录同级目录下面;这个文件很重要,关于web许多配置,都写在这个文件中;
配置虚拟主机
在一个Tomcat服务器中可以配置多个网站,所谓配置虚拟主机,就是tomcat服务器中配置一个网站。
如需在WEB服务器中配置一个网站,需要使用Host元素进行配置,例如:
<Host name=’’site1’’ appBase=”c:\app”></Host>
name代表域名, appBase代表网站的文件夹目录
配置的主机(网站),要想被外部访问,必须在DNS服务器或者Windows系统中注册。
配置的主机要想被外部访问,必须在DNS服务器或者Windows系统中注册;
配置https连接器
加密的传输协议;在网上传输信息的时候,默认是不加密的;
了解一些软件密码学基础:
对称加密:
例如:现在A准备给B发送信息;A先用密码将信息加密了,再发送给B,B收到信息以后,用密码将信息解密,得到信息原文;这里它们使用的密码是相同的,是由A指定的密码;这就是对称加密;
对称加密有一个致命的弊端:A怎么把指定的密码发送给B,在发送密码的过程中会不会被窃取;答案是肯定的,一定会被窃取;
非对称加密:
鉴于对称加密的不安全性,数学五百年的积累,提出了非对称加密;
例如:A要向B发送数据;B先利用非对称加密算法,算出一对秘钥;这对秘钥有个特性:就是任意其中的一把秘钥加密的数据,自己都解不开,必须要使用另一把秘钥解密;
B将生成的一对秘钥,其中的一把秘钥在网上发给A,这把在网上传送的秘钥,我们一般称为公钥;这样A可以将要发送的信息,用公钥加密发给B,B收到用私钥解密;
安全问题:
如果公钥在网上被人截获,怎么办呢?截获公钥,依然是解不开密文的;因为,只有私钥才能解开公钥加密的信息;暴力破解,不存在的,需要的时间非常久,可以看做不可能;
但是,这里还有安全问题的;
比如:我还可以自己生成一对秘钥,在截获B的公钥,将我的公钥发送给A,让它误以为这就是B的公钥;这样,A的密文,B将无法解开,而我将可以解开密文;这里的问题就是:如何让A确认 收到得到秘钥是B发送给他的,而不是我的秘钥;
互联网的解决方法:有一个第三方证书颁发机构,CA ;B产生一对秘钥,就会去找CA为他的公钥担保,CA会给他生成一个数字证书,这里面包含了B的公钥;这样,B给A的就是一个数字证书了;
A收到数字证书,要做的第一件事,就是确认数字证书是不是B的;
如何验证呢?浏览器内置了校验功能,它会自己去检验这个数字证书是不是CA颁发给B的;
以上就安全了吗?答案是否定的!
再看,比如我截获了B的数字证书,并且截获了A发送给B的密文,虽然我无法解密密文,但是可以用数字证书伪造密文,让B真实收到的信息是我发送的;这里的问题是:B收到信息以后,怎么判断信息是不是A发送的;
解决方法:A为了让B确认信息是他自己发送的;A也需要生成一对秘钥,并且让CA对其公钥进行担保;A现将要发送的信息,用B的公钥加密,然后,再将密文的摘要(也就是数据的指纹,业界用MD5算法,生成数据指纹,不同的数据,会产生不同的数据指纹)用自己的私钥再次加密,这里我们成为数字签名;然后,将密文发送给B;B收到以后,先用A的公钥解密摘要,如果能解开,就说明了两件事:
1、 信息是A发来的,因为,普天之下,只有A一人拥有私钥;能要A的公钥解密信息,说明信息是A的私钥加密的,也就是A发送来的;
2、 信息没被篡改过,因为其他人得不到A的私钥;一旦,对信息进行篡改,用他自己的私钥重新生成数字签名;B是解不开信息摘要的;
以上是不是就安全了呢?以上的安全,全部建立在CA是不可被攻破的基础上的,密码学讨论到最后,是没有安全可言的;
为我们的网站,配置Https连接器,也就是加密的传输;
命令: keytool –genkey –alias tomcat –keyalg RSA 先生成一张数字证书;
其中名字与姓氏就是网站的名字:是问你为哪一个网站生成证书;
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
配完以后,生成一个keystore文件;
我们要想我们的网站,使用加密传输,就需要我们去配置加密连接;在serverl.xml中配置 ;(单向传输配置)
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="conf/.keystore" keystorePass="********" />
我们指定端口号是8443,因此,访问这个端口,就是加密的连接了;我们在配置里面指定了证书的位置,证书的密码;但是,这里我们的证书,并不是受信任的证书,因为,使我们自己生成的,并不是CA颁发的;因此,不会得到浏览器的信任;
(二)javaweb开发的常见概念总结(来自那些年的笔记)的更多相关文章
- JavaWeb开发技术基础概念回顾篇
JavaWeb开发技术基础概念回顾篇 第一章 动态网页开发技术概述 1.JSP技术:JSP是Java Server Page的缩写,指的是基于Java服务器端动态网页. 2.JSP的运行原理:当用户第 ...
- javaweb学习总结二十二(servlet开发中常见的问题汇总)
一:web应用的映射问题 通常我们从别人那里拷贝来的代码,自己会修改应用的名称,但是web映射的访问路径并没有修改,还是原来的映射. 解决方法: 工程右键--properties--myeclipse ...
- JAVAWEB开发下常见中文乱码问题解决
JAVA环境下处理中文乱码问题一直是很多人困扰的问题,像URL传参乱码,写进数据库乱码,服务写中文文字图片乱码处理及导出PDF乱码. 1:安装中文支持 yum groupinstall "f ...
- javaWeb开发中常见的问题
1.修改表单提交的时候不好使可能是因为没写对应隐藏域的ID 2.el表达式在js代码中要加“”,例如 "${}" 3.JavaScript中的函数也有重载的特性.如果两个input ...
- 性能测试基础---jmeter二次开发
·Jmeter的二次开发,常见的有以下几种类型: ·扩展.修改Jmeter已有的组件(源代码) ·扩展.修改Jmeter已有的函数. ·完全自主开发一个新的组件(依赖于Jmeter提供的框架). ·扩 ...
- 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权
原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...
- 聊聊JVM(二)说说GC的一些常见概念
转自CSDN 上一篇总结GC的基础算法,各种GC收集器的基本原理,还是比较粗粒度的概念.这篇会整理一些GC的常见概念,理解了这些概念,相信对GC有更加深入的理解 1. 什么时候会触发Minor GC? ...
- JavaWeb学习总结-01 JavaWeb开发入门
一 基本概念 1 Web开发的相关知识 Web,表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源(如html 页面): ...
- JavaWeb---总结(一)JavaWeb开发入门
一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源( ...
随机推荐
- [报错解决] k8s 删除pv一直处于terminating 两种解决方法
第一种 直接到etcd中删除 1.将所有的etcd中的key值取到一个keys.yam里面,便于查询 ETCDCTL_API=3 etcdctl get "" --from-key ...
- (转) hive调优(2)
hive 调优(二)参数调优汇总 在hive调优(一) 中说了一些常见的调优,但是觉得参数涉及不多,补充如下 1.设置合理solt数 mapred.tasktracker.map.tasks.maxi ...
- MyBatis:Error evaluating expression ''''. Return value () was not iterable错误
Error evaluating expression ''''. Return value () was not iterable 出现原因:xml文件中遍历List 时,该参数的实际值为非Lis ...
- xposed代码示例
package com.example.xposedhook; import android.util.Log; import de.robv.android.xposed.IXposedHookLo ...
- 2018-2019-2 20165234 《网络对抗技术》 Exp8 网络欺诈防范 Web基础
Exp8 网络欺诈防范 Web基础 一. 实践内容 1. Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. 2. Web ...
- linux下如何让控制台程序后台运行
方法1:./test & 方法2:(./test &) 方法3:nohup 和bg 方法4:screen -mS test /root/test 退出程序需要手动进入screen创 ...
- iOS 的url中含有中文解决方法
[NSURLURLWithString:urlString]生成URL对象时,iOS客户端不能正确进行网络请求,网上找到的URLEncode方法又不能完全解决问题. 方法1: NSString* en ...
- Leetcode: Longest Palindromic Substring && Summary: Palindrome
Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...
- Mongo查询百万级数据性能问题及JAVA优化问题
Mongo查询百万级数据 使用分页 skip和limit 效率会相当慢 那么怎么解决呢 上代码 全部查询数据也会特别慢 Criteria criteria = new Criteria(); ...
- 一百四十六:CMS系统之帖子按照发布时间和评论数量排序
按照不同选项进行排序 视图 @bp.route('/')def index(): board_id = request.args.get('board_id', type=int, default=N ...