JavaEE开发-本地服务开发环境搭建

简介

  1. JavaEE开发
    1. 在Java的三大版本JavaSE、JavaME、JavaEE中,JavaEE是专门用来做后台开发的,所以,平时所说的“Java后台开发“,一般叫做JavaEE开发
    2. JavaEE开发的工作内容:编写服务器上运行的程序,为客户端提供数据服务。
  2. 服务器
    1. 服务器就是一台计算机,这台计算机对CPU和内存要求比较高
    2. 用户量、数据访问量越大,对服务器的性能要求越高
    3. 一般中大型企业都有自己独立的服务器机房,摆放着成群的服务器,小型企业可以考虑租用云服务器(比如阿里云、腾讯云服务器)
    4. 宕(dang)机:服务器死机、挂了,停止对外服务,客户端无正确响应,严重影响用户体验

搭建Java服务器开发环境

服务器软件Tomcat

  1. 服务器有很多端口,每个端口对应一个服务器软件
  2. 服务器软件是什么?
    1. 服务器软件可以把他简单理解成一个具有main函数入口、用socket网络编程可以随时监听处理外部网络请求的java应用程序
    2. 一个服务器软件下面可以部署n个java项目(比如:qq、微信等应用的后台),每个java项目可以用路径来区分
  3. java项目是什么?
    1. 每个java项目就可以把他想象成一块没有main函数入口的代码,这些代码根据项目的不同,分别放在了tomact安装路径下的不同的文件夹中
    2. 当tomcat监听到外部网络请求过来时,根据请求路径的不同来分别调用对应文件夹下的程序代码块
  4. Tomcat:
    1. java中的服务器软件,免费开源,这个软件也是由java开发的,因此要运行这个Tomcat软件必须通过JVM
    2. 有很多服务器软件,Tomcat只是其中一款
  5. 因此要想搭建一个服务器步骤如下:
    1. 在一台计算机上安装、启动一个JVM用来加载执行Tomcat
    2. 然后在该机器上安装服务器软件Tomcat
    3. 把开发人员编写的java代码部署到这个服务器软件Tomcat中
    4. Tomcat就可以执行这个java代码
      1. Tomcat有个类加载器,加载java项目中所有的类
      2. 可以发现java项目中没有main方法,不具备单独运行的能力,必须通过Tomcat加载
      3. 因此main方法在Tomcat中实现
      4. 部署就是告诉Tomcat,java项目在哪
      5. Tomcat就可以看成是一段java代码,这段代码实现了main函数,HttpServlet也是tomcat实现的,而且可以加载java项目的代码
  6. 客户端请求服务器的过程
    1. 客户端发送请求到服务器
    2. 服务器根据请求的端口找到对应的服务器软件Tomcat
    3. Tomcat根据请求信息去找到对应的java代码,执行java代码并返回结果给客户端

图1

手动本地运行Tomcat

  1. 下载和安装JDK(略)
  2. 安装Tomcat(windows)
    1. 下载地址:https://tomcat.apache.org
      1. 点击左边的Documentation里面的版本,点击Tomcat 9,下载9.0.34版本
      2. 可以看到
        1. Binary Distributions是二进制,就是安装包,选择zip—apache-tomcat-9.0.34.zip
        2. Source Code Distributions 源代码,选择zip—apache-tomcat-9.0.34-src.zip
    2. 直接解压到文件夹即可,解压到D:\Dev\Java目录下
    3. 启动:打开bin文件,找到startup.bat,双击即可,默认占用的是8080端口
    4. 此时就可以访问了:http://127.0.0.1:8080/docs
    5. 上面访问的是Tomcat安装目录下的webapps文件夹(Tomcat自带的安装目录)下的docs文件中的资源
  3. 启动和关闭Tomcat(TOMCAT_HOME指的是Tomcat的安装目录)
    1. 方法1(可以省略.bat)
      1. 启动: TOMCAT_HOME\bin\startup.bat
      2. 关闭: TOMCAT_HOME\bin\shutdown.bat
    2. 方法2(可以省略.bat),使用命令行,cd到bin目录
      1. 启动: TOMCAT_HOME\bin\catalina.bat run
      2. 关闭: TOMCAT_HOME\bin\catalina.bat stop
    3. Tomcat启动成功的前提条件:配置好JAVA_HOME,因为tomcat也是java代码运行需要JVM
      1. JAVA_HOME就是JDK的安装路径,JAVA_HOME配置上面已讲
      2. startup.bat本质是调用catalina.bat,catalina.bat的本质里面用到了JAVA_HOME,会去查找JVM的安装目录,启动JVM
    4. 注意: 上面都是windows系统,mac、linux系统双击对应的sh文件(也不需要配置什么JAVA_HOME)
      1. 切换到对应的tomcat的bin目录;
      2. 此处要是遇到没权限的,给下权限,sudo chmod 755 *.sh
      3. 启动:sh startup.sh; (ps:经过试验:./startup.sh 这种方式也能启动)
      4. 停止:sh shutdown.sh;(ps:经过试验:./shutdown.sh 这种方式也能关闭)
      5. 要显示启动日志得用以下方式:
        1. 上接第三步:
        2. ./catalina.sh run,当执行./catalina.sh这个命令是可以看到一堆提示命令

IDEA的使用

  1. IDEA2020.1.4之后貌似无法永久破解,因此最好用1.4之前的版本,不包含1.4
  2. 破解、安装-略

将tomcat集成到IDEA

  1. 由于每次都要手动启动tomcat,比较麻烦,因此可以将tomcat与开发工具IDEA集成到一起,这样就可以自动启动tomcat
  2. 步骤
    1. 打开IDEA(启动页面),点击最下面的Configure->settings(mac平台直接点击preferences…)
    2. 点击Build,Execution,Deployment(构建,执行,部署)->点击Application Servers(应用程序服务)
    3. 点击左上角加号“+”,展示一个列表,列表中都是java常用的服务器软件,选择Tomcat Server
    4. 设置Tomcat Home,选择Tomcat解压的本地路径(D:\Dev\Java\apache-tomcat-9.0.34),点击OK
    5. 再次点击OK,此时已经将tomcat集成到IDEA中

新建一个纯java项目(01_HelloWorld)

  1. 打开IDEA->New Project->左边选择Empty Project->next->Project name:设置项目名称(JavaProject),设置项目路径(也可以在Java目录下新建一个文件夹存放F:\Java\Codes\JavaProject)->Finish
    1. 这里的项目名称不是javaEE的项目名称,相当于是一个空的项目文件夹,可以存放n个项目
  2. 此时弹出Project Structure窗口,选择Project Setting ->Modules->点击左上角的加号“+”->New Module->弹出一个窗口,选择Java,Module SDK中选择为JDK8->next->Module name:自定义模块名称(01_HelloWorld)->点击Finish->点击OK
    1. 这个模块名称才是javaEE的项目名称
  3. 项目文件列表
    1. 01_HelloWorld文件夹下有个src文件夹,内部专门用于写Java源码
    2. External Libraries:该文件夹下存放整个项目依赖的库,目前有一个JDK8的库(1.8)
  4. 初始化代码
    1. 右击src->New->Java Class->Main->回车,新建一个Main类
    2. 在该类中新增一个main函数,写测试代码,右击选择运行(Run)执行测试代码

       public class Main {
           public static void main(String[] args) {
               System.out.println("---hello---");
           }
       }
      

新建一个JavaEE项目

  1. 删除Main类(JavaEE项目没有main函数入口)
  2. 将java项目变为JavaEE项目:新增web服务器模块
    1. 右击01_HelloWorld点击Add Framework Support…,勾选Web Application点击OK
    2. 此时生成一个与src平级的web文件夹
    3. 这个web文件夹就是给客户端提供的资源
    4. 在这个文件夹中新增html、css、img等文件夹分别编写相应的web代码

将JavaEE项目部署到Tomcat

  1. 点击IDEA工具绿色小锤标识右边的框,选择Edit Configurations…
  2. 点击左上角的加号“+”->选择Tomcat Server下的Local->为Tomcat依赖命名(Tomcat9)->点击Configure…选择Tomcat解压的本地路径(D:\Dev\Java\apache-tomcat-9.0.34)
    1. 在下面的Tomcat Server Settings中,可以看到当前Tomcat默认的是8080端口,也可以修改
    2. 外部访问通过IP地址+8080端口就能找到当前这个运行的服务器软件Tomcat
  3. 点击Deployment(部署)点击右边的加号“+”,选择Artifact…(打包),选择要部署的项目,可以同时部署多个项目
  4. 设置Application context:中的路径(/hello),这个路径的作用是用来区别当前Tomcat下的哪一个项目。一个Tomcat下可以部署n个Java项目,为了区别访问哪一个项目因此这里用路径指定; 点击OK即可
    1. 如果部署多个项目,多个项目的路径要设置的不同
  5. 此时点击右上角的虫子图标(断点调试),则启动Tomcat,并将当前的Java项目部署到Tomcat中;然后浏览器自动打开http://localhost:8080/hello/显示的网页是web文件夹下的index.jsp内容,即该路径访问的是web文件夹下的所有资源,默认寻找index的文件
  6. 可以在web下新建一个test.html,编写测试代码,然后点击甲壳虫,选择Redeploy(重新部署:因为是Java项目代码发生了改变,因此需要重启Tomcat服务,只需要重新部署Java代码即可),浏览器访问:http://localhost:8080/hello/test.html,就可以看到编写的测试代码
  7. 同理可以在web文件夹下新建html、css、img文件夹(右击web->new->Directory),存放不同的资源用于浏览器访问

登录页面项目创建

  1. web端代码
    1. 在web文件夹下新建一个login.html文件,编写登录代码:

       <!DOCTYPE html>
       <html lang="en">
       <head>
           <meta charset="UTF-8">
           <title>第一个登陆</title>
       </head>
       <body>
       <form action="/hello/login" method="get">
           <div>用户名<input name="username"></div>
           <div>密码<input name="password"></div>
           <button type="submit">登录</button>
       </form>
       </body>
       </html>
      
  2. 服务端代码:接收客户端发送过来的登录请求参数
    1. 如果Java项目需要接收客户端的参数需要依赖一个Servlet这个技术,Servlet这个库在Tomcat中,需要在项目中添加依赖库
    2. 点击右上角倒数第三个图标(Project Structure…)->点击Modules->01_HelloWorld->Dependencies->点击加号“+”选择Library->选择Tomcat9.0.34->add Selected->点击OK即可; 此时项目文件目录的External Libraries文件夹下面就会多一个Tomcat9.0.34库
    3. 在src文件目录下,右击new->Create new Servlet->name输入:LoginServlet、包名输入:com.zh.servlet,点击OK
      1. LoginServlet是类名
      2. com.zh.servlet:是包名,也是命名空间,每个点代表文件目录的节点,三层文件夹,com文件夹下的zh文件夹下的servlet文件夹下的LoginServlet类
      3. 包名是用来区分具有相同类名的类,包名的约定俗成:公司的域名反过来写
    4. 在LoginServlet类中编写接收客户端代码:

       /*
        处理登录请求
        1. 继承HttpServlet,才能处理http请求
        2. 使用@WebServlet,说明它要处理的请求路径
        * */
       @WebServlet("/login")
       public class LoginServlet extends HttpServlet {
           //处理get请求
           @Override
           protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
               System.out.println("------doget-----------");
               //统一函数处理
               doPost(req,resp);
           }
           //处理post请求
           /**
            * HttpServletRequest req: 请求,用来获取客户端发送的数据
            * HttpServletResponse resp:响应,用来给客户端返回数据
            * */
           @Override
           protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
               System.out.println("-------dopost---------");
               //获取客户端发送的数据(请求参数)
               //按照UTF8编码解析客户达发送过来的数据
               req.setCharacterEncoding("UTF-8");
               String username = req.getParameter("username");
               String password = req.getParameter("password");
               System.out.println(username + "---" + password);
               //设置响应数据的MINE Type和数据编码
               resp.setContentType("text/plain;charset=UTF-8");
               //2. 判断
               if("123".equals(username) && "456".equals(password)){
                   System.out.println("登录成功");
                   resp.getWriter().write("Login Success!");
               }else {
                   System.out.println("登录失败");
                   resp.getWriter().write("Login Error!");
               }
           }
       }
      
  3. 验证
    1. 部署服务,然后浏览器访问: http://localhost:8080/hello/login.html
    2. 输入账号:123,密码:456,则响应:Login Success!

如何在一个目录下新建多个Module项目

  1. 上面项目JavaProject下有个01_HelloWorld,那么其实JavaProject就相当于是一个文件夹,下面有第一个项目(Module)01_HelloWorld,那么如何在JavaProject文件夹下新建一个新的项目(Module)呢?
  2. 点击外部库(External Libraries),点击菜单栏的File->new->new moudle(新模块)然后同理建立第二个模块(纯java项目),然后在将该模块修改为JavaEE项目
  3. 这样一个目录下有多个项目(Module),即一个服务器软件下可以部署多个项目,但是注意这多个项目的访问路径不能一样
  4. 多个项目部署
    1. 点击Tomcat 9.0.34,点击Edit Configurations…,点击部署(Deployment),点击加号“+”可以选择部署n个项目
    2. 点击每个项目,可以通过Application context设置每个项目的访问路径
  5. 删除、导入、复制已存在的模块
    1. 删除:点击模块,右击->Remove Module
    2. 复制:值接在项目列表复制粘贴,重新命名文件夹名字,比如原来05_crm复制后修改为06_crm,注意也要将文件目录下的05_crm.iml也修改为06_crm.iml,然后再导入项目
    3. 导入:
      1. 导入方法1: File->Project Structure… ->点击左上角+ ->import Module->找到目录的Module,在文件夹中找到xxx.iml文件夹(06_crm.iml),然后点击打开即可
      2. 导入方法2:File->new ->Moudle from Existing Sources…->找到06_crm文件夹,然后找到里面的06_crm.iml,然后点击打开即可
      3. 导入完需要部署:打开Project Structure ->左边列 Artifacts ->点击+ ->Web Application Exploded -> from Moudles ->06_crm

直接新建一个(JavaEE)企业项目

  1. 打开IDEA->New Project->左边选择Java Enterprise
  2. project SDK选择jdk1.8,javaEE version选择最新版本即可,Additional Libraries and Frameworks勾选->Web Application,点击next
  3. 输入项目名称(01_HelloWorld)、路径D:\Dev\Java\Codes->点击完成
  4. 注意:这种方式会自动导入Tomcat、会自动创建web文件夹以及其默认文件(WEB-INF、index.jsp)
  5. 新建一个JavaEE Module:同理也可以在上面的JavaProject下面,新建一个Module,然后选择Java Enterprise,其余一样,这样就可以直接创建一个JavaEE的项目(Module),不用先创建成纯java项目,再改造成JavaEE项目了

IDEA点击run启动项目的原理

  1. 点击IDEA工具绿色小锤标识右边的框,选择Edit Configurations…,点击Tomcat 9.0.34,点击Startup/Connection…
  2. 可以看到run、Debug、Coverage、Profiler对应的下面的脚本
    1. 本质就是Tomcat安装目录bin目录下的catalina.bat run命令与catalina.bat stop命令

tomact的源代码分析

将源码包导入到当前项目

  1. 第一步:给当前项目添加tomact依赖库
    1. 打开一个已经创建好的项目
    2. 点击右上角倒数第三个图标(Project Structure…)->点击Modules->选择当前项目(01_HelloWorld)->Dependencies->点击加号“+”选择Library->选择Tomcat9.0.34->add Selected
    3. 点击OK即可; 此时项目文件目录的External Libraries文件夹下面就会多一个Tomcat9.0.34库
  2. 第二步:将tomact的源代码导入到当前项目
    1. 上面仅仅是将tomact这个库导入到项目中了,tomact库是jar的class文件不是源代码
    2. 但是我们点击进入HttpServlet类,好像看到了源代码,但是这个仍然不是源代码,是IDEA根据tomact库的jar的class文件反编译出来的伪源代码
    3. 重复第一步的2,在该页面找到已经添加的Tomcat9.0.34库,右击edit(编辑),点击左下角的加号”+”
      1. 如何删除:点击Classes(类)下的apache-tomcat-9.0.34-src.zip文件,点击下面的减号”-“,点击Sources这个标题,点击下面的减号”-“,就是删除已经添加的tomact源码
    4. 选择当初我们在tomact官方文档下载的apache-tomcat-9.0.34-src.zip,点击OK
    5. 此时再经过点击进入HttpServlet类,进入的代码就是真正的源代码了
    6. 可以看到:External Libraries/tomcat-9.0.34 下面多了一个apache-tomcat-9.0.34-src.zip库

tomact的源代码分析:

  1. 为什么项目一旦启动就自动加载index.jsp代码?
    1. command/ctrl+shift+f全局搜索,index.jsp,在tomcat.java源码文件中可以看到

       // Welcome files
       ctx.addWelcomeFile("index.html");
       ctx.addWelcomeFile("index.htm");
       ctx.addWelcomeFile("index.jsp");
      
    2. 首先加载index.html,其次index.htm,再次index.jsp

  2. main函数在tomcat的哪个文件实现的?
    1. 搜索中输入’class Bootstrap’,可以找到Bootstrap.java文件
    2. 该文件中的main函数就是tomcat的入口函数
    3. 可以看到Bootstrap.java的文件目录在…/catalina/startup/Bootstrap.java
        
     /**
      * Main method and entry point when starting Tomcat via the provided
      * scripts.
      * 当通过脚本启动Tomcat时,进入这个Main方法
      * @param args Command line arguments to be processed
      */
     public static void main(String args[]) {
         ····
     }
    

IDEA常用快捷键

  1. 如何设置每次点击debug的时候,自动选择“重构(redeploy)”?
    1. 点击Tomcat 9.0.34,点击Configure…->On “update” action 点击选择redeploy
    2. 点击OK即可
  2. 设置debug快捷键为alt+D,在快捷键搜索debug然后设置
  3. 常用快捷键

     Ctrl+D,复制当前行
     设置快捷键:在偏好设置的快捷键中搜索引入函数变量(var value..)设置一个快捷键,比如alt+s,作用是当定义了一个之后,直接使用快捷键alt+s就会自动生成变量名和变量类型
     双击shift,项目全局搜索
     command/ctrl+shift+f 整个IDEA搜索,可以搜索项目配置,库源码
     command/ctrl+R 当前文件内容全局替换
     command/ctrl+E 最近修改了哪些文件(很常用)
     Ctrl+Alt+L 整理代码,将代码按照标准格式整理
    

常用小技巧

  1. 方法的文档注释:输入/**,然后点击回车
  2. 新增常用代码块(也叫动态模板)
    1. 双击shift,输入live templates 然后打开
    2. 点击Java展开,就能看见很多的代码块,比如for循环是iter
    3. 点击右边的+可以自己添加自己的常用代码块
  3. 如何快速在左侧 Project 树中定位出文件
    1. 方式一:点击Project树右边的标准镜
    2. 方式二:alt+F1,然后点击1
    3. 方式三:点击Project树右边的设置齿轮图标,勾选Alwasy Select Opened File,打开某个文件会自动定位到Project树树下。
Table of Contents