【狂神说Java】JavaWeb入门到实战1---笔记

参考视频: 【狂神说Java】JavaWeb入门到实战

参考博文:【狂神说Java】JavaWeb入门到实战1---笔记

笔记:

  1. 如果换maven版本(降级或升级),都要后面的3步。5.3配置maven环境变量,5.4阿里云镜像,5.5本地仓库。
  2. 补充5.1 Maven项目架构管理工具(参考博文),Maven的核心思想:约定大于配置有约束,不要去违反 。什么是“约定大于配置”       Maven 约定优于配置
  3. 补充5.5本地仓库(参考博文),maven默认本地仓库  ,本地仓库是远程仓库的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。如果你所需要的jar包版本在本地仓库没有,而且也不存在于远程仓库,Maven在构建的时候会报错,这种情况可能是有些jar包的新版本没有在Maven仓库中及时更新。 (感觉和网络里面的路由器有点像,你发请求,先在路由器缓存中找,若有就返回;没有,再去服务器下载新的再返回给用户的同时更新路由器本地缓存。)
  4. 补充5.x,idea中配置tomcat,社区版idea找不到tomcat,看这里 intellij Idea找不到tomcat,你下载了社区版   ,这是idea旗舰版
  5. b补充5.x  idea中启动tomcat 报错,,报错org.apache.catalina.LifecycleException: 协议处理程序初始化失败      不能启动成功,我把原本http port 8080,改成8888就ok了    解决org.apache.catalina.LifecycleException: 协议处理程序初始化失败    ,
  6.     补充5.x,在pom.xml添加依赖
        <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.1.19.RELEASE</version>
            </dependency>
    报错:java - 未找到依赖项 'org.springframework.boot:spring-boot-starter-web:2.3.0.RELEASE'。看这里 java - 未找到依赖项 'org.springframework.boot:spring-boot-starter-web:2.3.0.RELEASE'    Maven的高级之处在于,他会帮你导入这个JAR包所依赖的其他jar。,安装一个spring-webmvc额外安装了aop,beans等等。
  7. 补充5.x,设置idea2021全局配置(idea2019  2020都不一样的),   IntelliJ IDEA2021.1.2最新全局配置   
  8. 报错:Xml declaration should precede all document content,   ,xml不能空了一行才写。
  9. maven添加httpServlet依赖(dependency添加到pom.xml):到maven仓库寻找相关的依赖(如果有很多选择,那么选人多的)
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.0-b01</version>
        <scope>provided</scope>
    </dependency>
    
  10. web.xmL中是配置我们lweb的核心应用,一个Servlet对应一个Mapping:映射web.xml servlet、servlet-mapping配置
  11. 视频(P7 javaweb-07:解决大家遇到的一些问题,35分钟左右),看上图web.xml,请求路径那儿,当访问http://localhost:8080/javaweb_01_maven05_war/kuangshen(javaweb_01_maven05_war,可以去掉javaweb_01_maven05_war的),请求访问kuangshen路径,也就是发起了一个请求,那么便会去找servlet-class,服务器会给请求一个response,看下面的代码
  12. ,代码设置了title和h1,
  13. maven父子工程遇到的bug,子module没有parent标签的解决几种方法(我自己手动添加了parent标签了)
  14. 补充6.2HelloServlet:IDEA Maven子项目 pom.xml 变灰 出现删除线,解决方法:项目中的pom.xml文件被设置在maven忽略清单中, 将变灰出现删除线的文件 取消选中。
  15. IDEA 查看源码快捷键
    快捷键 功能
    Ctrl + Shift+i 出现类似于预览的小窗口
    Ctrl + Enter (接上步)完全打开源码
    Ctrl + 鼠标左键 一步到位打开源码 = Ctrl + Shift+i –>Ctrl + Enter
  16. maven中配置webapp的4.0的servlet的web.xml模版
  17. <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
    </web-app>
    
  18. 编写Servlet的映射:为什么需要映射:我们写的是JAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要再web服务中注册我们写的Servlet,还需给他一个浏览器能够访问的路径;
  19. Servlet是由Web服务器调用,web服务器在收到浏览器请求之后,会:
    在这里插入图片描述
  20.  
      <!--可以自定义后缀实现请求映射
          注意点,*前面不能加项目映射的路径
          这不行/hello/*.qinjiang,tomcat报错
          -->
      <servlet-mapping>
          <servlet-name>hello</servlet-name>
          <url-pattern>*.qinjiang</url-pattern>
      </servlet-mapping>
  21. 优先级问题:指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求;,/hello和/*,访问/hello,能访问到吗?这就涉及到了映射路径优先级。
    <!--404-->
      <servlet>
          <servlet-name>error</servlet-name>
          <servlet-class>com.kuang.servlet.ErrorServlet</servlet-class>
      </servlet>
    
      <servlet-mapping>
          <servlet-name>error</servlet-name>
          <url-pattern>/*</url-pattern>
      </servlet-mapping>
  22. 6.5、ServletContext:web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用;(ServletContext保存的东西可以给多个Servlet用)。ServletContext作用功能详解
  23. 注意观察下面的两部分代码:HelloServlet和GetServlet
  24. public class HelloServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //this.getInitParameter()   初始化参数
            //this.getServletConfig()   Servlet配置
            //this.getServletContext()  Servlet上下文
            ServletContext context = this.getServletContext();
            String username = "秦疆"; //数据
            context.setAttribute("username",username); //将一个数据保存在了ServletContext中,名字为:username 。值 username
    
        }
    }
    
  25. public class GetServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            ServletContext context = this.getServletContext();
            String username = (String) context.getAttribute("username");
    
            resp.setContentType("text/html");
            resp.setCharacterEncoding("utf-8");
            resp.getWriter().print("名字"+username);
        }
    }
  26. 在web.xml分别设置HelloServlet和GetServlet的servlet和servlet-mapping后,启动tomcat,如果想在GetServlet中拿到username,应该先到HelloServlet servlet-mapping映射的url访问,因为在HelloServlet才设置了username,然后再到GetServlet   servlet-mapping映射的url访问,才拿到username。
  27. 在build中配置resources , 来防止我们资源导出失败的问题

  28. 读取资源文件Properties:在java目录下新建properties在resources目录下新建properties           发现:都被打包到了同一个路径下:classes,我们俗称这个路径为classpath:
  29. 导出成功,运行Tomcat后可能Idea没有及时显示,需要
  30. 找到了狂神JavaWeb markdown笔记资源,在此资源上再补充吧。
  31. 5454
  32. 435345
  33. 453
  34. 534
  35. 534
  36. 534
  37. 453
  38. 345
  39. 345
  40. 345
  41.  
posted @ 2021-10-22 10:53  旷野之息  阅读(433)  评论(0编辑  收藏  举报