JavaWeb
Servlet
概念
- Server Applet 的简称,是服务器端的程序(代码,功能实现)。
- 可交互式处理和响应用户请求。
- 动态网页技术。
- javaWeb开发的技术基础。
作用
- 接收客户端请求,完成操作。
- 动态生成网页。网页数据可变。
- 将包含操作结果的动态网页响应给客户端。
Servlet核心
Servlet和的核心接口和类
- 除了实现Servlet接口外,还可以通过继承 genericServlet 和 HttpServlet的实现。
Servlet接口
- 所有的servlet都会间接或直接与该接口发生关系
- 核心方法:
1.init(ServletConfig config):初始化。
2.ServletConfig getServletConfig ():获取Servlet的初始化参数。
3.service(ServletRequest request, ServletResponse response):请求和响应,方法已经过时。
4.String getServletInfo():获取网页说明信息。
5.destory():关闭Servlet
Servlet 配置方法
配置XML文件
- < servlet>标签
- < servlet-name >标签中的是创建的Servlet文件名称。
- < servlet-class >标签中的是 创建的Servlet文件的包路径。
- < servlet-mapping > 标签
1.< servlet-name >标签中的是创建的Servlet文件名称。
2.< url-pattern >标签中的是Servlet文件的访问路径URL。
注解配置
- Servlet 3.0后推荐使用,通过@WebServlet注解来配置信息。
Sevlet的生命周期
概念
Servlet的特性
线程安全
- Servlet在被访问后会创建一个Servlet对象。
- Tomcat服务器里面可以同时并发访问同一个Servlet.
- 如果涉及到修改成员变量的话,就可能产生线程安全的问题。
如何解决线程安全问题
- 用synchronize()。
- 实现 singleThreadModel接口。
- 尽量使用局部变量。
状态管理
Http协议
概念
- 超文本传输协议。
- 是一个基础请求,响应的 应用层协议,运行于TCP基础之上。
特点
- 特点基础浏览器和服务器模式。
- 简单 、快速、灵活、无连接。
Http 中 Request 请求和 Response响应的区别
- 我的在创建Servlet时,会覆盖service方法,生成 doPost(HttpServletRequest request, HttpServletResponse response) 方法和 doGet(HttpServletRequest request, HttpServletResponse response) 方法,并且需要重写doPost 和 doGet 方法
- request 代表请求,response代表响应
- goPost :用于post 请求
- doGet : 用于 get 请求
- doPut : 用于 put 请求
- doDelete : 用于 delete请求
request
概念
- 在Servlet中t一般用于处理客户端请求。
- request对象中包含了客户端中请求的所有内容。
常用方法 - String getParameter(String name);根据表单组件名称获取相应的数据。
- void setCharacterEncoding(String character) ;指定每个请求的编码格式。
Post请求乱码
- 客户端以浏览器设置的编码格式将数据传到服务端。
- 处理乱码的方法为request.setCharacterEncoding(String character) ;
- 或者将浏览器和服务端的编码格式统一。
response
概念
- response 响应用户请求并向客户端传输信息。
- response对象包含了项目目标的所有内容。
常用方法
- setHeader(name,value); 设置响应头信息。
- setContentType(String);设置响应文件类型以及编码格式。
- void setCharacterEncoding(String character) ; 设置服务器响应内容的编码格式。
- getWriter();获取字符输出流。如: response.getWriter().print();
解决中文乱码
- 设置服务器的响应编码格式:response.setCharacterEncoding(“UTF-8”);
- 设置客户端响应头内容的文件类型以及编码格式:response.setHeader(“ContentType-type”,“text/html;charset=UTF-8”);
转发和重定向
转发
概念
- 转发的作用在服务端。
- 将请求转发给服务器上的其他资源,以共同完成一次请求处理。
实现
- request.getRequestDispatcher("/URL?数据").forward(request,response );
- 转发是服务器内的一次请求,不换改变地址栏,属于同一次请求。
数据传递
- 在URL后跟着数据,如==“FindAllSeaFoodByClassServlet?seaFoodClass=特色干货& userId=12”==
- 利用setAttribute(“key”,value);存储数据,getAttribute(“key”);来获取数据,如:request.setAttribute(“key”,value); and request.getAttribute(“key”);
特点 - 转发是服务器行为
- 转发,浏览器访问地址不变,只做了一次请求
- 转发两次之间的传输数据不会丢失,可以通过request进行数据获取。
- 转发只能给同一个web应用中的组件。
重定向
概念
- 重定向的作用在客户端。
- 客户端请求服务器,服务器响应给客户端一个新的地址进行请求。
实现
- 通过 response.sendRedirect(URL);
注意
- 使用Redirect跳转时,地址发送变化,属于多次请求。
数据传递
- 重定向中,response没有作用域,两次请求间的request不能进行数据传递。
- 可以通过URL进行拼接进行数据传递,response.sendRedirect(“URL+msg&msg2”);
- 获取数据可以通过 request.getParameter(String name);
特点
- 重定向是客户端的行为。
- 浏览器至少做了两次请求。
- 两次请求之间的request不能进行数据传递。
- 重定向后,请求地址发送改变。
- 可以指向任何资源。
总结
- 在需要进行数据转发时,用request.forward();进行跳转。不建议用sendRedirect();
表单提交方式 POST 和 GET 方法的区别
POST请求
- post方法是把提交的数据放在HTTP包的Body中。
- 密文传递数据,数据量大,安全,一般用于表单提交。
- 效率相对没有GET高。
- 对应的Servlet中的是doPost()方法。
GET请求
- GET提交的数据会放在URL之后会以?分割URL与传输数据,参数之间以&相连。如:“FindAllSeaFoodByClassServlet?seaFoodClass=特色干货& userId=12”
- GET方式明文传递,数据量小,不安全。
- 效率高,浏览器默认请求方式为GET请求。
- 对应的Servlet方法为doGet()方法。
Cookie
总结
Session