- 问题汇总
- 缓存
还是不行 就删除tomcat 重新安装
-
- 自动部署
如果没有开着自动构建 导致 编写完之后不会生成class文件,导致ClassNotFunt 找不到对应的类
如果 开启自动构建 还是提示未找到
1 程序是否有错
看是否报红
2 是否生成class
如果没有生成,可能是因为程序有错,如果程序没有错误,还是不生成class
可能因为之前报错了,及时现在更改了,但是依然出现了缓存问题
可以刷新项目,或者关闭eclipse重新打开,或者编写一个main方法的类,运行一下
此时 如果程序没有问题 会正常运行,并且生成class文件
如果运行main也报错,找不到类,无法加载主类等
说明项目一定是有问题,确定代码没有问题,可以重新创建一个项目,把代码复制进去即可
-
- 运行问题
说明tomcat启动失败
1 代码有问题
控制台会报错
2 tomcat中删了一些东西,重新解压一下tomcat即可
-
- 端口冲突
这个弹框 就是端口被占用问题
改端口 可以再tomcat安装目录下的 conf中的server.xml中更改
-
- 路由重复
两个类 LoginServlet类的路由和AjaxServlet类的路由 一致了
-
- 请求流程
http://localhost:8080/Servlet_01/hello
当客户端浏览器发送请求 的时候
通过 localhost可以找到当前电脑
:8080 就找到 tomcat的webapps
Servlet_01 就是我们要执行的项目
/hello 就是我们要请求的servlet_01项目中的功能
此时 /hello就会去和Servlet_01项目中 的web.xml中定义的路由进行匹配(或者是注解定义的路由)
找到这个对应的类之后,就会去执行该类中的init方法,service方法等
或者是根据注解方式的路由 就可以执行定位到类
注意 整个项目中 路由 必须唯一
- 作用域
数据的使用范围
setAttribute(“属性”,Object) : 用于向对应作用域中保存数据
getAttribute(“属性”) : 用于在对应作用域中获取数据
-
- Request
当前请求有效,如果向 request中保存了一个数据,该数据在当前请求结束前有效
通过测试 页面显示 永远都是1 因为每次新的请求 都是一个新的request对象 数据不共享
-
- Session
当前会话有效,默认一次会话就是打开浏览器一直到浏览器关闭 是一次会话
当然可以指定session的过期时间
经常用于登陆校验
通过测试 session作用域的范围 是当前会话有效
当前会话不结束时 数值一次递增,当结束会话的时候,或者是新的浏览器的时候 会从1开始
-
- ServletContext
全局作用域,一般叫application ,只要服务器没关闭,数据一直有效
- 初始化参数
我们基本上每个文件都需要设置字符编码
此时UTF-8是硬代码,后续想要更改很不方便,需要更改源码
所以一般这种情况我们会把UTF-8这个数据保存在xml中,后续更改的时候可以直接更改XML
-
- 局部初始化参数
在web.xml中 某个servlet注册的时候,在注册内 指明 初始化的参数
然后再servlet中可以通过servletConfig对象获取
通过测试 其他servlet 获取不到设置的参数,得到null 只有这个initParm类 可以获取
-
- 全局初始化参数
全局初始化参数可以再所有servlet中 通过servletContext获取
通过测试 全局初始化参数 可以再任何servlet中获取使用
- JSP
- 概述
Servlet中 想要将数据内容打印到页面,需要在java中进行大量的html代码拼接,非常不合理,代码不美观,容易出错
而jsp就解决了这个问题,数据交给jsp 由他来完成数据的展示工作
JSP本质就是一个servlet,只不过之前是在java代码中拼接html代码
现在等于是在html代码中编写部分java代码获取内容
编写完之后,通过jsp引擎把jsp文件转换为 servlet文件,
我们再jsp中进行编码,常规的html编码,然后只需要嵌入少量的java代码把内容展示即可
最终运行这个jsp的时候,会先把jsp转换为java代码,还是转换为 拼接html的方式
-
- 基本使用
三种语法