目录
Tomcat
配置Tomcat与使用
常见的错误
静态资源和动态资源
Ajax的使用
JS中如何解析JSON字符串
Tomcat
Tomcat是一个HTTP服务器。
之前写的代码都是自己写的main方法,控制权一直在我们手中,但是会调用第三方库(别人写的代码),Tomcat是别人写好的main方法,我的代码是被Tomcat的代码反向控制的。
配置Tomcat与使用
先下载Tomcat:
Apache Tomcat® - Apache Tomcat 8 Software Downloads
我下的这个版本
然后:
1、新建一个Maven工程:
2、修改pom.xml为:
4.0.0 org.example first-webapp1.0-SNAPSHOT 1.8 1.8 javax.servlet javax.servlet-api3.1.0 provided
3、在src/main下面新建webapp目录(放静态文件),在webapp下面再建一个WEB-INF目录(放这个项目资源的配置文件)
4、找一个web.xml放置在webapp/WEB-INF/下
下载的Tomcat目录解压之后,Tomcatapache-tomcat-8.5.60apache-tomcat-8.5.60webappsexamplesWEB-INF目录下,就有一个web.xml文件,直接粘贴,改下内容使用即可
web.xml:
5、通过smarttomcat配置启动项
网络状态良好时,在Plugins 的Marketplace直接搜索Smart Tomcat安装即可:
或是提前下载好压缩包,在这里选好压缩包的路径也可以:
点击Apply OK 完成配置,安装好之后是会重启IDEA的。
安装好的标志是,重启之后的Plugins的Installed里,可以找到:
然后退出Settings在这里,点击+号下的smart Tomcat:
选择Configuration:+选择之前下载解压好的Tomcat目录:
然后Apply OK.即可
6、准备好一个资源。以src/main/webapp为资源的根目录,注意:放在WEB-INF下面是访问不到的。
在这里启动Tomcat :
运行结果:
点击蓝色部分添加运行文件路径:localhost:8080/我的Web项目/hello.html
或者在浏览器输入要访问的页面打开:127.0.0.1:8080/我的Web项目/hello.html
要访问的资源路径是这个路径之下的:
如果将这个路径改掉:
那么访问路径就是127.0.0.1:8080/hello.html
服务器下,一个资源路径=Context Path(Appliation Path)+Servlet Path
注:Context Path改了之后,一定要重启Tomcat。
如果启动Tomcat失败了,就是默认端口被监听了,在cmd中输入:netstat -nao | findstr 8080
查看端口被进程占用没有。把对方进程干掉,在任务管理器里终止这个进程,在重启Tomcat即可。
常见的错误
1.Tomcat没有启动
2.Tomcat启动了
第一:排查一下8080端口真的是被Tomcat监听的?
第二、资源路径错误:
写错单词或者Context Path,Servlet Path这两个路径是不是写错了
或者改了Context Path,没重启Tomcat。
放在WEB-INF里的不是资源。
3.页面白页,或者没有按照预期显示(HTML)
第一、用开发者工具的元素界面,查看元素是否符合预期结构
第二、
如果代码是由JS动态生成的,检查控制台js有没有报错,
js资源是不是200,
如果js没错,检查js的内容是不是最新的符合预期的,
检查ajax是不是200,
ajax的响应是不是符合预期的
静态资源和动态资源
静态资源:提前写好了内容(内容始终固定的页面),Tomcat只需要读取并返回,即使用户不同/时间不同/输入的参数不同,页面内容也不会发生变化;(除非网站的开发人员修改代码,否则页面内容始终不变)
动态资源:相对于静态资源:就是执行一段代码,生成内容,动态资源用户不同/时间不同/输入的参数不同,页面内容回发生变化;
虽然资源的格式和动态或者静态无关,但一般来说,html,css,js都是以静态资源处理为主的。
Ajax的使用
提供JS可以发起HTTP请求的能力(同一个域名下才有的权限)
XMLHttpRequest()对象的使用,open(method,url),send(),οnlοad=function(){...}
responseText:响应体
JS中如何解析JSON字符串
JSON.parse(jsonString);
// 利用这个对象发起 HTTP 请求
var xhr = new XMLHttpRequest();
xhr.open("get", "/data/students.json");
// 以时间驱动的方式,读取响应 —— 当 xhr 完成响应时,执行我们准备好的函数
xhr.onload = function () {
console.log(this); // this 就是 xhr 对象
console.log(this.responseText); // string 类型
console.log(xhr.responseText); // string 类型
// 我们希望把 json 字符串解析成 js 的具体数据类型
var sts = JSON.parse(this.responseText);
console.log(sts);
var body=document.querySelector('body');
for(var i in sts){
var st=sts[i];
body.innerHTML+=`${st.name}`;
}
}
xhr.send(); // 发送 HTTP 请求


