JavaWeb练习题目
JavaWeb练习题目
JieWeb 应用基础
- 简述 C/S 应用程序与 B/S 应用程序的区别?
a. C/S 结构应用程序(Client/Server):
客户端—服务器结构。
凡是需要在客户的机器上安装客户端软件的应用程序都是 CS 架构的应用程序。
优点:响应速度快,安全性强,一般应用于局域网中。
缺点:需要经常更新客户端,开发维护成本高。
b. B/S 结构应用程序(Browser/Server):
浏览器—-服务器结构。
凡是使用浏览器运行的应用程序都是 BS 架构的应用程序。
优点:跨平台,客户端零维护,即不需要更新客户端。
缺点:响应速度受制于网络。
JavaWeb 就是使用 java 语言开发 B/S 结构应用程序。
- 简述 URL 的各个组成部分?
URL:Uniform Resource Locator 即统一资源定位符:用于完整地描述 Internet 上网页和其他资源的地址的一种标识方法。就是我们通常所说的网址。 URL 是惟一能够识别 Internet 上具体的计算机、目录或文件位置的命名约定。 - 简述如何修改 Tomcat 的端口号?
在 Tomcat 安装目录下的 conf 文件夹中,存放 Tomcat 的一些配置文件,里面的 server.xml 为主配置文件,打开 server.xml 配置文件,修改 Tomcat 默认端口:port 改为自定义端口即可,默认端口为 8080. - 简述 JAVAEE 工程的标准目录结构?
- 简述同步请求模式与异步请求模式的区别?
a. 传统的超链接、表单等提交请求方式为同步请求。也就是说:当一个请求发送后,在响应没有返回之前,程序不会继续往下运行。
b. 使用 ajax 提交方式为异步请求。也就是说:当一个请求发送后,在响应没有返回之前,程序会继续往下运行。
Servlet 开发技术
- 简述 Servlet 的创建过程?
1 | package servlet; |
1. 一个类继承HttpServlet类,我们就将它称为一个Servlet。
2. 继承HttpServlet类后,必须要重写doGet和doPost方法。 当get请求时,自动由doGet方法进行处理。 当post请求时,自动由doPost方法进行处理。
3. doGet和doPost方法都有两个参数:HttpServletRequest、HttpServletResponse HttpServletRequest:封装了请求信息。 HttpServletResponse:封装了响应信息。
4. 所以,可以使用HttpServletRequest对象中的getParameter方法获取客户端提交参数。 使用HttpServletResponse创建响应输出流,向客户端响应信息。
5. @WebServlet注解中,使用urlPatterns属性来设置Servlet映射:将客户端请求映射到对应的Servlet上。
6. @WebServlet注解中,也可以简写为:@WebServlet("/hello")
- 简述 HttpServletRequest、HttpServletResponse 两个参数的作用?
HttpServletRequest:封装了请求信息。 HttpServletResponse:封装了响应信息。
可以使用 HttpServletRequest 对象中的 getParameter 方法获取客户端提交参数。 使用 HttpServletResponse 创建响应输出流,向客户端响应信息。
HttpServletRequest 常用 API
- getParameter() 获取客户端提交的单值参数,也就是返回值是一个字符串。
- getParameterValues() 获取客户端提交的多值参数(复选框组),也就是返回值是一个字符串数组。
- setCharacterEncoding() 设置请求的字符编码。
HttpServletResponse 常用 API
- getWriter() 获取一个向客户端响应的输出流。
- setCharacterEncoding() 设置输出流的字符编码。
- setContentType() 设置 MIME 类型,也就是通知浏览器使用何种编码解析响应数据。
- 简述 Servlet 生命周期过程?
Servlet 实例从创建直到毁灭的整个过程,就是 Servlet 生命周期。以下是 Servlet 遵循的过程: 1. Servlet 容器创建 Servlet 的实例(下面会详述 Servlet 实例创建时机) 2. Servlet 通过调用 init () 方法进行初始化(只调用一次)。 3. Servlet 调用 service() 方法来处理客户端的请求(每一次请求都要调用一次)。
service() 方法会根据请求的方式自动调用 doGet 或 doPost。 4. Servlet 通过调用 destroy() 方法终止(只调用一次)。
在调用 destroy() 方法之后,Servlet 对象被标记为垃圾回收。 - 简述@WebServlet 注解的作用?
@WebServlet 注解中,使用 urlPatterns 属性来设置 Servlet 映射:将客户端请求映射到对应的 Servlet 上. - 简述如何配置 Servlet 的创建时机?
@WebServlet 中的loadOnStartup
Servlet 对象由 Web 服务器负责创建,创建的时机可以使用 loadOnStartup 属性进行配置:
- loadOnStartup 属性的值必须是一个整数,表示 servlet 应该被载入的顺序
- 当值为 0 或者大于 0 时,表示容器在应用启动时就加载并初始化这个 servlet;
- 当值小于 0 或者没有指定时,则表示容器在该 servlet 被选择时才会去加载。
- 正数的值越小,该 servlet 的优先级越高,应用启动时就越先加载。
- 当值相同时,容器就会自己选择顺序来加载。
- 取值 1,2,3,4,5 代表的是优先级,而非启动延迟时间。
- 什么是 HTTP 状态码?请至少说出 4 种 HTTP 状态码及其作用?
HTTP 状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的 3 位数字代码。它由 RFC 2616 规范定义的。所有状态码的第一个数字代表了响应的五种状态之一。
1xx:消息。
这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。
2xx:成功。
代表请求已成功被服务器接收、理解、并接受。比如:
200:请求已成功。出现此状态码是表示正常状态。
3xx:重定向。
代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。
4xx:请求错误。
代表客户端请求发生错误。比如:
404:找不到请求的资源
405:服务器端处理请求方法不被允许。
5xx:服务器错误。
代表服务器端出现错误。 比如:
500:服务器端代码错误。
503:服务器异常(通常重启服务器即可解决)。
- 简述 CORS 的跨域设置?
Access-Control-Allow-Origin:指示允许访问资源的源。 Access-Control-Allow-Credentials:指示是否允许发送凭据(如 Cookies)
CORS 是 H5 新增的一个 W3C 标准,全称是”跨域资源共享”(Cross-origin resource sharing)。
跨域只存在于浏览器端,不存在于 Node.js/python/ java 等其它环境;跨域请求是能够发出去的,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。
CORS 可以在服务器端响应时,向浏览器发送 “Access-Control-Allow-Origin” 配置信息,通知浏览器解除跨域限制。如果浏览器支持 CORS、并且判断 Origin 通过的话,就会允许 XMLHttpRequest 发起跨域请求。
所以,CORS 配置要写在服务器端。
CORS 跨域设置:
1 | response.setHeader("Access-Control-Allow-Origin", "*"); |
其中,“*”可以更换为需要配置的 URL
- 编程题:
a. 使用 Servlet 实现一个登录案例。
b. 编写一个用户登录页面,包括用户名和密码表单。
c. 编写一个 LoginServlet,并在 Servlet 中判断是否登录成功,然后向前端返回成功或失败的 json 数据。
d. 前端使用 ajax 请求,并通过服务器端返回的 json 数据来显示是否登录成功。