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();
转载:https://blog.csdn.net/qq_41488299/article/details/105719798