zoukankan      html  css  js  c++  java
  • javaEE(1)_web开发入门

    一、WEB开发的相关知识

    1、WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。 Internet上供外界访问的Web资源分为: 静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。 静态web资源开发技术 Html,常用动态web资源开发技术: JSP/Servlet、ASP、PHP等.在Java中,动态web资源开发技术统称为Javaweb.

    2、学习web开发,需要先安装一台web服务器,然后再在web服务器中开发相应的web资源,供用户使用浏览器访问。

    3、web服务器也是Java程序写的,启动服务器的时候会首先查找jdk.所以启动前要安装jdk和设置环境变量。

    4、一个简易web服务器原理:

    public class Server {
        public static void main(String[] args) throws Exception {
            ServerSocket ss = new ServerSocket(9090); 
            Socket s = ss.accept();
            FileInputStream fis = new FileInputStream(new File("D:/html/a.html"));
            OutputStream os = s.getOutputStream();
            //下面这段代码是一个模型
            byte[] buffer = new byte[1024];
            int len=0;
            while((len=fis.read(buffer))>0){
                os.write(buffer, 0, len);
            }
            os.close();
            fis.close();
            s.close();
            ss.close();
        }
    }

    浏览器通过http://localhost:9090即可访问a.html页面,http协议默认端口是80,web应用上线时,端口要改为80,这样用户就不用输入端口号。

    二、Tomcat目录结构

    三、web应用和虚似目录的映射

    WEB应用程序指供浏览器访问的程序,通常也简称为web应用。一个web应用由多个静态web资源和动态web资源组成,如:html、css、js文件、Jsp文件、java程序、支持jar包、配置文件等等…..组成web应用的这些文件通常我们会使用一个目录组织,这个目录称之为web应用所在目录,也就是web应用根目录。Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射。

    虚似目录的映射有三种方式:

    1、在server.xml文件的host元素中配置,例如:

    补充知识点:映射缺省web应用,path=""。
    注意:一个Context即代表一个web应用,context元素在配置文件中除用于映射虚似目录外,它还可用于为web应用配置一些资源,例如:配置web应用使用的数据库连接池,javamail session等(这些本配置以后会用到)。

    2、在Tomcat6中,不再建议在server.xml文件中配置context元素,细节查看tomcat服务器关于context元素的说明。
    3、让tomcat自动映射: tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚似目录。换句话说,tomcat服务器webapps目录中的web应用,外界可以直接访问,开发一般直接放在这里即可,不需要再配置映射,这也就是在eclipse环境下部署项目时要把一个deploy path改为webapp的原因,否则服务器不会自动发布其它目录下的web应用,还需要在server.xml中配置。

    四、web应用组织结构和web.xml文件的作用

    1、开发web应用时,不同类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错。

    2、Web.xml文件是整个web应用中最重要的配置文件,它必须放在WEB-INF目录中。在开发web应用时,但凡涉及到对web应用中的web资源进行配置,通通是在web.xml文件中进行设置。例如:某个web资源配置为网站首页、将servlet程序映射到某个url地址上、为web应用配置监听器、为web应用配置过滤器......

    五、配置虚似主机

    在一个tomcat服务器中可以放置多个网站,所谓配置虚似主机,就是在tomcat服务器中配置一个网站。如需在WEB服务器中配置一个网站,需使用Host元素进行配置(一个host是一个网站),例: <Host name=”site1” appBase=”c:app”></Host>,配置的主机(网站)要想被外部访问,必须在DNS服务器或本地windows系统中注册。

    六、其它一些问题

    1、tomcat体系结构

    Host是主机,Context是web应用。

    2、web资源的访问过程,如:浏览器输入http://www.sina.com/mail/a.html,首先查看windows的host文件获取主机名对应的ip,如果没有则上DNS服务器获取(如果直接输入新浪的ip则访问新浪的默认主机这个是在engine里面配置的),然后用得到的ip访问sina服务器,通过发送http请求:

    然后sina的web服务器从请求信息中获取客户端要访问的主机(因为一个web服务器可以配置多个主机,也就是多个网站),然后从请求信息中得到要访问的web应用,再获得要访问的web资源,然后sina服务器去读取相应主机下的相应web应用下的资源,最后用读取到的web资源创建一个http响应,返回给客户端。

    3、打包web应用为war包,web服务器可以自动解压, cmd相应目录下执行    jar -cfv   名称.war  名称

    4、配context元素的reloadable元素,让tomcat自动加载更新后的web应用,一般不配,容易加重tomcat负担。

    七、密码学基础和配置tomcat的https连接器

    1、用户提交比较重要的表单,比如注册或登录的时候,是要对提交的数据进行加密的(一般是对密码加密)。

    2、对称加密,使用相同的密钥进行加密和解密,这种加密有致命的漏洞,就是密钥无法以任何可靠途径传递给需要加密的另一方。

    3、非对称加密,采用非对称加密算法生成一对公钥和私钥,公钥加密的数据只能私钥解,私钥加密的数据只能公钥解,黑客只拿到其中一个是无法解密数据的,暴力破解需要无限长时间,相当于不可破解。但是此过程还是有漏洞,例:

    下图是一个蒋介石要和宋美龄通信的模型:

    注:蒋介石请求和宋美龄进行通信,此时可以将宋美龄比作Tomcat服务器,蒋介石比作客户端浏览器,此时首先宋美龄应用非对称加密算法产生一个公钥私钥,将公钥给蒋介石,蒋介石将数据用这个公钥加密后的数据传递给宋美龄,宋美龄用自己的私钥就可进行解密,这个公钥的话是不怕被方立勋窃取的,因为即使窃取了也无法破解,所有这就解决了对称加密中密钥无法安全传递的问题。但这里面还有问题,宋美龄给蒋介石公钥的这个过程,可能被方立勋截获,然后方立勋生成一对方的公钥和私钥,然后将方的公钥传递给蒋,蒋用方的公钥加密后传递给宋的过程又被方截获,这时方就可以用自己的私钥解密这条数据,这里面需要解决的问题其实就是蒋介石如何确定给自己公钥的是宋,这时就有了CA机构来对宋进行担保,也就是认证,这时宋就不是直接给蒋公钥,而是用数字证书这样一种形式来给蒋公钥,蒋通过安装数字证书来拿到宋的公钥,而蒋就是浏览器可以判断这个是不是宋,浏览器提供这样的功能支持,确定是宋以后才会加密数据发送给宋。这里面其实还有问题,目前只是蒋能确实来的是不是宋,而宋还无法确定来的是不是蒋,这时通过数字签名来实现的,先了解到这里即可,以后用到再深入。

    4、tomcat的https连接器的配置

    首先在cmd环境下,使用keytool -genkey -alias tomcat -keyalg RSA生成数字证书就是一个.keystore的密钥库文件,生成这书过程要输入密钥库密码比如123456,将这个文件放到conf目录下,然后通过tomcat的server.xml中配置如下

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
          maxThreads="150" scheme="https" secure="true"
          clientAuth="false" sslProtocol="TLS" keystoreFile="conf/.keystore" keystorePass="123456"/>

    这样在浏览器中输入https://localhost:8443浏览器会出现证书不安全界面,点击继续就获得了https的连接。目前只配置了https单向连接,实际开发会配置https双向连接,也就是数字签名的问题,这里不深入。

    ps:之前项目中就是登录注册采用https连接,而其它请求还是采用http连接。

    八、tomcat服务器的管理平台,这个东西还是很有用的

    需要在conf omcat-users.xml文件中配置角色和用户以及密码,这样即完成服务器端的配置,配置如下:

      <role rolename="tomcat"/>
      <role rolename="role1"/>
      <role rolename="manager-gui"/>
      <user username="tomcat" password="tomcat" roles="tomcat,manager-gui"/>
      <user username="both" password="tomcat" roles="tomcat,role1"/>
      <user username="role1" password="tomcat" roles="role1"/>

    这样在客户端输入http://localhost:8080即可进入tomcat主界面,点击manager webapp即可完成项目的部署,删除,停用等,还可以直接上传war文件完成项目部署。

    ps:用户名和密码千万不能泄露,否则后果不堪设想。

  • 相关阅读:
    Golang gRPC学习(01): gRPC介绍
    MySQL InnoDB存储引擎大观
    SpringBoot学习-图文并茂写Hello World
    Golang的goroutine协程和channel通道
    业务 产品 技术的一点看法
    需求一直做不完,怎么办?
    技术管理:项目开发中的几种风险管理
    go内存管理
    etcd实现分布式锁分析
    强缓存与协商缓存
  • 原文地址:https://www.cnblogs.com/wangweiNB/p/4892926.html
Copyright © 2011-2022 走看看