javaweb项目得执行过程及servlet得请求(Httprequest)和响应(Httpresponse)

javaweb项目的执行过程及servlet核心要点

1.javaWeb应用的结构

​ 1.Java Resources :java代码
​ 2.WebContent:资源文件 如:html css js jsp png,mp4…
​ 3.META-INF:不要动
​ 4.WEB-INF:下的lib中放的是jar包,web.xml整个应用的配置文件

2.JavaWeb的整个执行过程

​ 1.浏览器发送url请求到服务器即javaweb应用
​ 2.进入到javaweb应用首先找到web.xml文件找到对应的Servlet类
​ 3.在web应用中根据逻辑关系进入到service层,之后再进入dao层进行数据库的操作,数据库再把得到的信息返回给dao层
​ 4.最后通过页面把结果响应给浏览器
​ 重点注意:Servlet就是处理浏览器发送请求和响应的组件

3.Servlet简介

1.理解:

​ servlet是运行再Web服务器中的小型java程序。servlet通常通过HTTP(超文本传输协议),接收和响应来自web客户端的请求
​ 1.Servlet可以运行再tomcat中
​ 2.Servelt是一个接口
​ 3.可以接收浏览器发送的请求
​ 4.补充内容:tomcat支持servlet和jsp规范

2.使用:

​ 1.自定义类实现Servlet接口
​ 2.实现未实现方法
​ 3.定义Servlet的访问路径(需要再web.xml中配置)

3执行过程:

		1.浏览器访问url:http://localhost:8080/JavaWeb_day22_web02/servlet01
		2.通过/JavaWeb_day22_web02访问到对应的项目中的web.xml
		3.通过/servlet01匹配web.xml中的<servlet-mapping>中的<url-pattern>
		4.没有匹配返回404,匹配到了根据<servlet-mapping>中的<servlet-name>
		5.再去匹配<servlet>中的<servlet-name>
		6.如果匹配成功,执行<servlet>中的<servlet-class>找到对应的类

4.注意事项(细节)

​ 1.Servlet为什么可以执行?

		web.xml中通过<servlet-class>加载了此类

​ 2.谁实例化的Servlet?
​ tomcat(Servlet容器)实例化的
​ 3.Servlet什么时候初始化的?

		默认浏览器第一次访问的时候初始化的
			在web.xml中可以通过设置<load-on-startup>0</load-on-startup>指定tomcat启动初始化Servlet

​ 4.一个Servlet被初始化了多少次?
​ 只被初始化一次
​ 5.如何支持多用户访问:?
​ 核心的service处理多用户访问:原理多线程策略
​ 6.一个Servlet可以指定多少个访问路径?
​ 可以指定多个访问路径
​ 7.路径多元化访问路径
​ /xx:
​ /xx/aa/bb
​ /*:任意路径访问
​ *.后缀 :以什么后缀的路径访问
​ 8.一个应用中可以有多少个Servlet?
​ 可以配置多个Servlet类
​ 9.一个路径可以映射多少个Servlet?
​ 一个路径只能映射一个Servlet

5.Servlet生命周期方法:

​ 1.init方法:
​ 默认第一次访问Servlet执行此方法初始化Servlet
​ 2.service方法:
​ 请求到service处理客户端请求和响应
​ 3.destroy方法:
​ 应用关闭或者移出tomcat执行此方法回收Servlet
​ 6.Servlet的优化
​ 1.GenericServlet
​ 1.Servlet的子类GenericServlet抽象类
​ 2.实现了Servlet中方法中除了service方法之外的其他方法,开发者只需要实现service方法
​ 3.使用:
​ 1.自定义类继承GenericServlet抽象类
​ 2.实现service方法,处理请求和响应
​ 3.配置访问路径web.xml
​ 2.httpServlet
​ 1.GenericServlet子类的抽象类,目前使用最多
​ 2.不仅实现了service还重写了service,提供了两种处理请求和响应的方式,要么doXx,要么重写service
​ 3.基于HTTP请求,有不同的请求方式:get/post
​ HttpServlet专门处理基于HTTP协议的请求,根据不同的请求方式处理不同的请求
​ 4.使用:
​ 1.自定义类继承HttpServlet抽象类
​ 2.要么重写doXx方法,要么重写service
​ 3.配置访问路径
​ 3.快速使用Servlet
​ 1.使用注解的方式替换配置文件手动配置
​ 2.new—>Serlet---->定义类名---->指定访问路径---->指定重写方法

4.Servlet中的核心知识点

1.处理请求和响应 service/doXx中的两个参数

​ 补充:每次请求tomcat都会创建一个请求对象和一个响应对象

ServletRequeest(HttpServletRequest)

1.理解:

​ API定义:
定义将客户端请求信息提供给某个servlet的对象。servlet容器创建ServletRequest对象,并将该对象作为参数传递给改servlet的service方法
​ 1.客户端请求时携带的内容都封装到了该对象中
​ 2.tomcat实例化该对象
​ 3.还将该对象作为service/doXX方法中的参数
​ 4.直接在service或者doXx方法中直接使用

2.接收信息(请求行,请求头,请求正文)

了解:请求行、请求头

​ 1.获取浏览器请求方式

			String method = request.getMethod();

​ 2.获取浏览器请求的url

			StringBuffer buffer = request.getRequestURL();

​ 3.获取浏览器请求头

			String accL = request.getHeader("Accept-Language");
掌握:请求正文:

​ 1.get方式提交的信息
​ 1.a连接拼接参数
​ url拼接参数
​ 2.post方式提交的信息
​ form表单提交数据(登录,注册)

核心方法:

​ 1.根据name获取value(一个name对应一个值)

			 String value = request.getParameter(name);
			 String  username = request.getparameter("username")

​ 2.根据name获取value(一个name对应多个值)

			 String[] values = request.getParameterValues(name);
		     String[] hobbys = request.getParameterValues("hobby");

​ 3.获取所有的name

			Enumeration<String> names = request.getParameterNames();

​ 4.获取所有的name和value

			Map<String,String[]> map = request.getParameterMap();

​ 5.java万物皆对象 form数据也得映射到对象中
​ 1.导包 commons-beanutils-1.8.0.jar 和 commons-logging.jar
​ 2.BeanUtils.populate(user,map);

响应对象HttpServletResponse

1.API理解

​ 定义辅助servlet将响应发送到客户端得对象,servlet容器创建ServletResponse对象,并将它传递给service方法
​ 1.response对象可以实现服务器响应客户端
​ 2.tomcat创建并且和request成对出现,每次请求都会创建一个
​ 3.response对象传递到service或者doXx方法中

2.作用:

​ 1.响应客户端信息(响应行,响应头,响应正文)
​ 1.响应文本内容:
​ 1.设置响应对象得编码

		response.setContentType("text/html;charset=utf-8");

​ 2.打印流 IO得一种

			1.PrintWriter writer = response.getWriter();
			2.writer.writer(“请你加油”);

​ 3.响应字节内容:实现图片下载

		1.先将文件读入内存:(获取文件得真实路径)
​						String realPath =request.getServletContext().getRealPath("images/xx.jpg");2.解决文件名乱码问题
​						String filename = new  String ("xx.jpg".getBytes("utf-8"),"ISO-8856-1");
​						FileInputStream fis = new FileInputStream(realPath);3.告诉浏览器该文件要下载:
​								response.setHeader("Contentdisposition","attackment;filename="+filename);4.再把文件写出到客户端
​						1.ServletOutputStream sos = response.getOutputStream();2.byte[] buff = new byte[1024];3.int len = 0;

   						4. while ((len= fis.read(buff)!=-1)){sos.writer(buff,0,len);}
            					5.sos.close();
            					6.fis.close();

猜你喜欢

转载自blog.csdn.net/qq_41488299/article/details/105719798
今日推荐