文章目录
1、Tomcat服务器软件的目录结构说明, 如何配置Tomcat的环境变量?
bin:可执行文件(startup.bat shutdown.bat)
conf:配置文件(server.xml)
context.xml:用来配置tomcat上下文的共享通用信息,帮助我们在多个网站之间使用相同的资源(数据源,共享文件)
serverl.xml:用来设置tomcat服务器运行时的行为(端口,处理请求处理)
web.xml:配置tomcat多个网站的托管信息行为,里面也有welcome-file-list (注意:webapps下面的web.xml 要比这里的优先级更高一些)
lib:tomcat依赖jar包 tomcat运行是,会讲WEB-INF/lib中的所有Jar统一打成一个包。也就是说可以把jdbc的驱动丢进去,以后就不用自己丢驱动了
log:日志文件(记录出错)
temp:临时文件
webapps:可执行的项目,将我们开发的项目,放入目录
word:存放由jsp翻译成的java,以及编译成的class文件
配置Tomcat环境变量,首先下载好Tomcat压缩包,并具备jdk相对环境
解压Tomcat,在高级变量里配置
CATALINA_BASE
D:\apache-tomcat-9.0.17-1
CATALINA_HOME
D:\apache-tomcat-9.0.17-1
先关配置请参考笔记:
2、如何使用Eclipse创建Web项目?
2.1、配置环境
Eclipse版本必须是2019以上版本(太低了,Tomcat版本相对较低)
先来查看JDK在Eclipse上的相关配置
再来添加Tomcat相关依赖,我这里Tomcat 9.0版本
设置tomcat
2.2、创建项目
现在有了相关的环境,开始创建Web项目
要记得在左边新建一个Package Explorer的资源管理器哟
第一步:右键 新建 Dynamic Web Project 下一步
第二步:随便起个名字,默认4.0 版本 下一步
第三步:下面的 build\classes
更改为 WebConfig\WEB_INF\classes
下一步 (这一步就是更改生成文件的路径)
第四步:勾选选框,默认未勾选状态,勾选后,会创建 web.xml 文件 结束
第一次创建会慢一点点哟 耐心等待 以后就好了
3、Java Server Pages的运行原理?
我一开始听到这里,还以为是什么高大上的题目,后来查阅资料,才发现 Java Server Pages 其实就是我们所说的 JSP,呵呵呵…了
项目的jsp文件,在被部署到Tomcat中后,当Tomcat服务启动后,Tomcat服务器会先把 JSP 文件编译成 Java 最终由 JDK 编译成 class文件 成为class文件后,JVM就可以进行相对的阅读操作
4、什么是无状态请求, 应用程序的类型?
HTTP无状态协议,是指协议对于交互性场景没有记忆能力。
这句话可能太抽象了,我们可以这样去理解
每次我们去逛淘宝的时候,是不是都要先登录我们的用户名啊,那确实,要先登录一下,不然淘宝不知道谁要买这个东西,寄到哪里去也不清楚,在我们登录之后,我们紧接着就要可以去购物了,挑了一大堆东西放进购物车里,最后写入收货地址,付款。完成了整个流程,但我们有没有想过这样一件事情,当我们在第一个登录页面登录后,后面的每一步都和此用户息息相关。但是,我们所有的网页都是独立的呀,在我们写html代码的时候,每个页面和每个页面都是相互区分的,之间并没有数据在相互链接,如果是要链接的话,把一大堆用户名、用户密码、等一切都在网页之间相互传输的话,那样会消耗大量的服务器资源,这个时候,我们才有此引来了Session和Cookie,把一些信息用sessionID来标识,让服务器和客户端能仅靠一个钥匙,实现数据的共享传输,这样,也就能理解什么是无状态请求了。Session 和 Cookie的工作,我想老师都讲过,我就不再一一解释了,但我要扩展的是,Session Cookie的工作能力确实不错,但是也有一个缺点,也就是安全性不高,因此又引来了Token,因为Token的加入,我们的数据传输变得更加安全,有效。
5、request和response对象的作用和常用方法?
request
-
String getParameter(String name)
根据请求的字段名key,返回字段值value,最终拿到的是value的值
-
String[] getParameterValue(String name)
根据请求的字段名key,返回多个字段值value
-
void setCharacterEncoding(编码格式utf-8)
设置请求编码
(tomcat7以前默认是iso-8859-1,tomcat8以后就改为了utf-8) (补充一点:这一点也是作者的最新发现,在Tomcat8以上,在server.xml文件里配置端口那一项,默认写上了 encoding=utf-8)
-
getRequestDispatcher(“b.jsp”).forward(request,response)
实现请求转发 A->B
-
getServerContext()
获取项目的ServletContext对象
response
-
void addCookie(Cookie cookie)
服务端向客户端增加一个cookie对象
-
void sendRedirect(String location) thorws IOException
页面跳转的一种方式叫重定向
-
void setContetType(String type)
设置服务端响应的编码(设置服务端contentType类型)
6、处理中文乱码的方法有几种,如何实现?
第一种:启动Tomcat后,控制台输出的语句有乱码行为
解决方案:在tomcat 的 conf 目录下 找到 logging.properties
打开这个文本文件,找到如下配置项:
java.util.logging.ConsoleHandler.encoding = UTF-8
将 UTF-8 修改为 GBK,修改后的效果为:
java.util.logging.ConsoleHandler.encoding = GBK 重启tomcat
第二种:启动Tomcat后,在网页里看到了乱码问题
第一:检查jsp 文件是否是 UTF-8 格式
第二:头文件是否书写为 encoding = utf-8
看下一条
7、针对GET和POST请求如何处理中文乱码?
get
-
get方式如果出现乱码,解决:
- 统一每一个变量
- new String(旧编码改成新编码)
- name = new String(name.getBytes(“iso-8859-1”),“utf-8”);
- 统一每一个变量
-
修改server.xml,一次性更改tomcat默认get提交方式的编码(utf-8)(一劳永逸)
- 在改端口号的地方加一个
-
URIEncoding=“utf-8”
-
建议使用tomcat时,首次在server.xml中统一get方式的编码
-
- 在改端口号的地方加一个
post
- 设置post编码
- request.setCharacterEncoding(“utf-8”);
8、转发与重定向的区别和应用场合是什么?
请求转发 | 重定向 | |
---|---|---|
地址栏是否改变 | 不变 | 改变 |
是否保留第一次请求时的数据 | 保留 | 不保留 |
请求次数 | 1个来回 | 2个来回 |
跳转发生的位置 | 服务端 | 客户端发出第二次 |
转发是要比重定向快,因为重定向需要经过客户端,而转发没有。有时候,采用重定向会更好,若需要重定向到另外一个外部网站,则无法使用转发。另外,重定向还有一个应用场景:避免在用户重新加载页面时两次调用相同的动作。
9、session,application对象的作用和常用方法是什么?
session
-
String getId()
获取sessionId
-
boolean isNew()
判断是否是新用户(第一次访问)
-
void invalidate()
使session失效 (退出登录、注销)
-
void getAttribute()
获取参数
-
Object setAttribute()
设置参数 -
void setMaxInactiveInterval()
设置最大有效时间 非活动时间
-
int setMaxInactiveInterval()
获取最大有效时间 非活动时间
application
- Object getAttribute(String name):根据属性名,或者属性值
- void setAttribute(String name,Object obj):设置属性值(新增,修改)
- setAttribute("a,“b”); 如果a对象之前不存在,则创建一个a对象
如果a对象已经存在,则a的值改为b - void removeAttribute(String name) :根据属性名,删除对象
10、cookie对象的作用和常用方法是什么?
public Cookie(String name,String value)
String getName()
String getValue()
void setMaxAge(int expiry);
11、内置对象的作用域?
pageContext JSP页面容器(page对象) 当前页面有效
request 对象请求 同一次请求有效
session 会话请求 同一次会话有效
application 全局对象 全局有效(整个项目有效)
- pageCntext 当前页面有效(页面跳转后无效)
- request 同一次请求有效 (请求转发后有效;重定向后无效)重定向两次请求了
- session 同一次会话有效 (无论怎么跳转,都有效;关闭/切换浏览器后无效,)
- application 全局有效(整个项目有效)(切换浏览器任然有效);关闭发我、其他项目 无效多个项目共享、重启仍然有效:JNDI
注意:
- 以上的4个范围对象,通过setAttribute()复制,通过getAttribute()取值
- 以上范围对象,尽量使用最小的范围。因为 对象的范围越大,赵成的性能损耗越大。
12、JavaBean?
JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁。JSP搭配JavaBean来使用,有以下的优点:
1、可将HTML和Java代码分离,这主要是为了日后维护的方便。如果把所有的程序代码(HTML和Java)写到JSP页面中,会使整个程序代码又多又复杂,造成日后维护上的困难。
2、可利用JavaBean的优点。将日常用到的程序写成JavaBean组件,当在JSP要使用时,只要调用JavaBean组件来执行用户所要的功能,不用再重复写相同的程序,这样以来也可以节省开发所需的时间。
和OOP的封装概念相似
13、3层架构?
表示层+业务逻辑层+数据访问层
各层作用:
1、数据访问层:主要是对非原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据库的操作,而不是数据,具体为业务逻辑层或表示层提供数据服务。
2、业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
3、表示层:主要表示WEB方式,就html懂了吧,首先要能显示数据,这是必须的,其次好看就完事了