一、Servlet
1.Servlet的工作过程:
Servelt的工作流程示意图
(1)客户端发起一个Http请求 到服务器,请求特定的资源或者是要执行特定的操作
(2)服务器在接收到请求 后,根据请求相应的URL将请求分发给相应的Servlet容器
(3)Tomcat加载并初始化Servlet,然后调用service()方法处理请求,根据请求的类型执行相应的操作处理,最后将生成内容返回给服务器,服务器再把它发送到客户端,
ps:也就是说Servlet的工作过程是接收客户端请求、处理请求然后生成响应返回给客户端,从而实现动态的web页面与用户交互
2.常用的Servlet配置方法:
(1)@WebServlet注解方式
web.xml文件中使用<servlet>和<servlet-mapping>标签来配置Servlet。
- 在<servlet>标签中指定Servlet类的名称和路径。
- 在<servlet-mapping>标签中指定Servlet的URL映射。
javascript<servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/myservlet</url-pattern> </servlet-mapping>
(2)web.xml文件
在Servlet类上使用@WebServlet注解来指定Servlet的URL映射和其他配置信息。比如:
java@WebServlet(name = "MyServlet", urlPatterns = {"/myservlet"}) public class MyServlet extends HttpServlet { // Servlet code }
(3)自定义容器
如果使用Spring框架,可以通过配置文件或注解来配置Servlet。在Spring配置文件中使用<bean>标签来配置Servlet,或者在Servlet类上使用@Controller或@RequestMapping注解来指定URL映射。
java<bean id="myServlet" class="com.example.MyServlet" />
java@Controller @RequestMapping("/myservlet") public class MyServlet { // Servlet code }
3.Servlet生命周期方法:
(1)初始化调用init()方法
当Servlet被实例化时调用,用于初始化Servlet。在这个方法中通常进行一些初始化操作,比如加载配置文件、建立数据库连接等。
(2)请求Servlet服务调用service()方法
每次有请求到达Servlet时都会调用这个方法。在这个方法中处理请求并生成响应。
(3)销毁实例前调用destory()方法
当Servlet被销毁时调用,用于释放资源。在这个方法中通常进行一些清理操作,比如关闭数据库连接、释放内存等。
二、会话管理
1.对比session与cookie的异同。
|---------|---------------------|----------------------|
| 相同点 | session和cookie都是同于保存会话数据的对象,并且都能用于客户端与服务器之间数据传递,通常会话会将用户的id号以cookie的方式存放在浏览器中进行用户的身份识别,而且两者都与一个用户对应只是在不同的作用域工作。 ||
| 不同点 | cookie | session |
| 不同点 | 存储在浏览器的缓冲区 | 存储在服务器端 |
| 不同点 | 相对不安全,因为内容可以被用户修改 | 用户没有权限修改,因此安全性高 |
| 不同点 | 可以设置过期时间,可以长期保存在客户端 | 会随着用户的下线或关闭浏览器、超时而失效 |
| 不同点 | 存放在客户端可以减轻服务器负担 | 存放在服务器端对服务器的性能要求更高 |
2.与过滤器有关的3个接口:
|----------------------------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| javax.servlet.Filter | 过滤器接口 | 定义了过滤器的生命周期方法和过滤方法,包括init()、doFilter()和destroy()。 |
| javax.servlet.FilterChain | 过滤器链接口 | 用于在过滤器中调用下一个过滤器。它的doFilter()方法允许过滤器将请求传递给下一个过滤器,或者如果没有下一个过滤器,则将请求传递给Servlet。 |
| javax.servlet.FilterConfig | 过滤器配置接口 | 用于获取过滤器的初始化参数和ServletContext。它的方法可以让过滤器获取在部署描述符中配置的初始化参数,以及访问ServletContext对象。 *** ** * ** *** 常用方法有三个: getFilterName()、getInitParameter(String name )和 getServletContex() |
3.Servlet监听器是个可以监听web应用程序内部事件的Java类.相应的监听器有哪几种,各实现哪些监听?
|--------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Servlet上下文事件 | |-----------------------------------|----------------------| | ServletContexListener接口 | 对servletcontext创建和删除 | | ServletContextAtrributeListener接口 | Servletcontext属性增删改 | |
| 会话事件 | |--------------------------------|--------------------| | HttpSessionAtrributeListener接口 | 用于监听Http会话中属性设置 | | HttpServletListener接口 | 用于监听会话的创建和销毁 | | HttpSessionBingdingListener接口 | 用于监听对象本身绑定或删除到一个会话 | |
| 请求事件 | |-----------------------------------|--------------| | ServiceRequestListener接口 | 用于监听每次请求到来 | | ServletRequestAttributeListener接口 | 用于跟踪请求属性的增删改 | |
三、JSP
1.JSP的隐式对象:
JSP的隐式对象有九个,它们分别是:
|-------------------|-----------------------------|
| out对象 | 向客户端发送文本内容 |
| request对象 | 存储客户端的请求 |
| response对象 | 存储响应客户端时要发送的信息 |
| session对象 | 存储用户会话信息 |
| application对象 | 作用在JSP页面所属的应用程序 |
| pageContext对象 | 使用户在访问页面作用域中可以定义所有的隐式对象 |
| page对象 | 正在运行的JSP页面所产生的类对象 |
| config对象 | 存储Servlet信息(编译JSP页面过程中所创建的) |
| exception对象 | 处理异常信息 |
2.JSTL标签有哪些优点?
第一,可以简化JSP和WEB程序的开发,让本来需要大量代码才能实现的功能可以通过少量JSTL代码便可以实现;
第二,可读性高,在团队开发中方便他人查看代码,并且易于理解;
第三,在JSTL代码下编写的web程序易于后期维护;
四、JavaBean
1.JavaBean的编码规范
首先:
- 必须要具有一个公共的(public)
- 无参的构造方法(可以是编译器自动产生的缺省构造方法)
然后:
提供公共的(public)setter方法和getter方法------这里是为了能够使得外部的程序获取或者设置JavaBean的属性
2.Spring容器支持多种形式的Bean的三种装配方式
(1)基于XML的显式装配:
设值注入与构造注入
(2)基于注解(Annotation)的装配:
使用注解来标识Bean,包括@Component、@Service、@Repository、@Controller等,同时使用@Autowired、@Resource等注解来自动装配Bean。
(3)自动装配
将一个Bean自动的注入到到其他Bean的Property中。 Spring的<bean>中包含一个autowire属性,通过设置autowire的属性值来自动装配Bean。
3.Spring实例化Bean有三种方式
|----------------|------------------------------------------------------------------------------------------------------------------------|
| 构造器实例化 | Spring容器通过建立的Bean类中的默认构造器来实例化Bean |
| 静态工厂方式实例化 | Spring容器通过建立的Bean类中的默认构造器来实例化Bean |
| 实例化工厂方式实例化 | 直接创建Bean实例,在配置文件里面利用factory-bean属性配置实例工厂,通过factory-method属性来确定使用哪个方法,也是自行通过创建Bean类和工厂类,但这里和上面的不同的是,是通过非静态方法去获取Bean类的实例 |以上三个方法在创建并实例好后,都需要创建Spring配置文件,(配置Bean类/工厂类),最后进行测试