1.浏览器依据ip,port建立与容器之间的连接。
2.浏览器将相关数据打包(按照http协议创建一个请求数据包),然后发送请求。
3.容器将请求数据包解析出来,然后将解析到的数据放到request对象里面,同时还会创建一个response对象。
4.容器创建servlet对象,然后调用该对象的service方法(将request对象和response对象作为参数)
可以通过request对象获得请求参数值,并且将处理结果写到response对象里。
5.容器通过response获取处理结果,然后打包(响应数据包)发送给浏览器。
6.浏览器解析响应数据包,生成相应的页面。
1.在配置文件中修改和server有关配置
//通用Servlet容器配置
server.port=8081
server.servlet.context-path=/crud
//Tomcat配置
server.tomcat.uri-encoding=utf-8
2.编写嵌入式Servlet容器定制器(WebServerFactoryCustomizer)
@Bean
public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
@Override
public void customize(ConfigurableWebServerFactory factory) {
factory.setPort(8081);
}
};
}
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("Hello MyServlet");
}
}
@Bean
public RegistrationBean myServlet()
{
RegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(), "/myServlet");
return registrationBean;
}
在客户端到服务器的过程中,当发送请求时,如果有不符合的信息将会被filter进行拦截,如果符合则会进行放行,在服务器给客户端响应时也会进行判断,如果有不符合的信息将会被filter进行拦截,如果符合则会进行放行。
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("MyFilter");
filterChain.doFilter(servletRequest,servletResponse);
}
@Bean
public FilterRegistrationBean myFilter()
{
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new MyFilter());
registrationBean.setUrlPatterns(Arrays.asList("/hello", "/myServlet"));
return registrationBean;
}
作用:监听某个事件的发生,状态的改变
内部机制:接口回调
//web应用启动
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("contextInitialized");
}
//当前web项目销毁
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("contextDestroyed");
}
@Bean
public ServletListenerRegistrationBean myListener()
{
ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<>(new MyListener());
return registrationBean;
}