【狂神说Java】JavaWeb入门到实战1---笔记
参考视频: 【狂神说Java】JavaWeb入门到实战
参考博文:【狂神说Java】JavaWeb入门到实战1---笔记
笔记:
- 如果换maven版本(降级或升级),都要后面的3步。5.3配置maven环境变量,5.4阿里云镜像,5.5本地仓库。
- 补充5.1 Maven项目架构管理工具(参考博文),Maven的核心思想:约定大于配置有约束,不要去违反 。什么是“约定大于配置” Maven 约定优于配置
- 补充5.5本地仓库(参考博文),maven默认本地仓库 ,本地仓库是远程仓库的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。如果你所需要的jar包版本在本地仓库没有,而且也不存在于远程仓库,Maven在构建的时候会报错,这种情况可能是有些jar包的新版本没有在Maven仓库中及时更新。 (感觉和网络里面的路由器有点像,你发请求,先在路由器缓存中找,若有就返回;没有,再去服务器下载新的再返回给用户的同时更新路由器本地缓存。)
- 补充5.x,idea中配置tomcat,社区版idea找不到tomcat,看这里 intellij Idea找不到tomcat,你下载了社区版 ,这是idea旗舰版
- b补充5.x idea中启动tomcat 报错,,报错org.apache.catalina.LifecycleException: 协议处理程序初始化失败 不能启动成功,我把原本http port 8080,改成8888就ok了 解决org.apache.catalina.LifecycleException: 协议处理程序初始化失败 ,。
- 补充5.x,在pom.xml添加依赖
报错: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等等。<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.19.RELEASE</version> </dependency>
- 补充5.x,设置idea2021全局配置(idea2019 2020都不一样的), IntelliJ IDEA2021.1.2最新全局配置
- 报错:Xml declaration should precede all document content, ,xml不能空了一行才写。
- 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>
- web.xmL中是配置我们lweb的核心应用,一个Servlet对应一个Mapping:映射web.xml servlet、servlet-mapping配置
- 视频(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,看下面的代码
- ,代码设置了title和h1,
- 。
- maven父子工程遇到的bug,子module没有parent标签的解决几种方法(我自己手动添加了parent标签了)
- 补充6.2HelloServlet:IDEA Maven子项目 pom.xml 变灰 出现删除线,解决方法:项目中的pom.xml文件被设置在maven忽略清单中, 将变灰出现删除线的文件 取消选中。
- IDEA 查看源码快捷键
快捷键 功能 Ctrl + Shift+i 出现类似于预览的小窗口 Ctrl + Enter (接上步)完全打开源码 Ctrl + 鼠标左键 一步到位打开源码 = Ctrl + Shift+i –>Ctrl + Enter - maven中配置webapp的4.0的servlet的web.xml模版
-
<?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>
- 编写Servlet的映射:为什么需要映射:我们写的是JAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要再web服务中注册我们写的Servlet,还需给他一个浏览器能够访问的路径;
- Servlet是由Web服务器调用,web服务器在收到浏览器请求之后,会:
-
<!--可以自定义后缀实现请求映射 注意点,*前面不能加项目映射的路径 这不行/hello/*.qinjiang,tomcat报错 --> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>*.qinjiang</url-pattern> </servlet-mapping>
- 优先级问题:指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求;,/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>
- 6.5、ServletContext:web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用;(ServletContext保存的东西可以给多个Servlet用)。ServletContext作用功能详解
- 注意观察下面的两部分代码:HelloServlet和GetServlet
-
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 } }
-
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); } }
- 在web.xml分别设置HelloServlet和GetServlet的servlet和servlet-mapping后,启动tomcat,如果想在GetServlet中拿到username,应该先到HelloServlet servlet-mapping映射的url访问,因为在HelloServlet才设置了username,然后再到GetServlet servlet-mapping映射的url访问,才拿到username。
-
在build中配置resources , 来防止我们资源导出失败的问题
- 读取资源文件Properties:在java目录下新建properties在resources目录下新建properties 发现:都被打包到了同一个路径下:classes,我们俗称这个路径为classpath:
- 导出成功,运行Tomcat后可能Idea没有及时显示,需要。
- 找到了狂神JavaWeb markdown笔记资源,在此资源上再补充吧。
- 5454
- 435345
- 453
- 534
- 534
- 534
- 453
- 345
- 345
- 345