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