导图社区 JavaWeb笔记(持续更新)
JavaWeb培训机构学习笔记总结持续更新后期还会加上Oracle数据库和JavaSE的笔记
编辑于2020-01-13 14:50:06Java
JavaEE
用于动态JavaWeb开发 基于B/S开发模式
经典层次结构
Web层
Servlet
Java Web的基础技术,提供接受、处理Http请求、做出Http响应,以及其它Web相关的功能。
servlet的生命周期: 加载类 -> 实例化(new) -> 初始化(init) -> 调用doGet -> 销毁(destroy) 1.实例化(new):默认在用户发起第一次请求时new,且仅执行一次(单例模式),可使load-on-startup修改servlet的new实例化的时机 2.初始化(init):当servlet实例化完成之后,被初始化,且仅执行一次,如果同时定义不带参数init()与带参数init(config)方法,带参数优先级更高 3.调用服务(service):用户每发起一次请求,调用一次,且根据用户发起的请求方式(get | post | put | delete...),分发到对应的doGet | doPost | doPut | doDelete等方法 4.销毁(destroy):重启tomcat服务器或关闭tomcat服务器时,销毁资源
获取html信息
①getParameter(name)根据input的name属性值获取参数信息 ,返回一个String
String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println(username + " " + password);
②getParameterValues(name) 根据input的name属性值获取参数信息 ,返回数组
String[] hobbies = request.getParameterValues("hobby"); System.out.println(Arrays.toString(hobbies));
③getParameterMap() 获取所有参数名-参数值的键值对
Map<String, String[]> map = request.getParameterMap(); Set<Entry<String, String[]>> entries = map.entrySet(); for (Entry<String, String[]> entry : entries) { String name = entry.getKey(); String[] values = entry.getValue(); System.out.println(name + " : " + Arrays.toString(values)); }
get请求与post请求
post 与 get请求的区别
① 地址栏: get请求:将参数带在地址栏中 post请求:将参数带在请求数据体中 ② 安全性: get请求(查询) < post请求(新增、修改、删除) ③ 参数长度: get请求:限制1KB post请求:默认不限制 ④ 效率: get请求 > post请求 ⑤ 编码格式: get请求:默认使用ISO-8859-1编码 post请求:请求头使用ISO-8859-1编码,请求数据体与实际使用编码格式一致
处理Get请求与Post请求乱码方法
一般情况①③方法一起使用即可解决基本问题
①设置request请求的字符集编码----------------------仅对post有效 request.setCharacterEncoding("utf-8");
②手动编码(通用) byte[] bytes = username.getBytes("ISO-8859-1"); 编码(String字符串->byte[]字节数组): 使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组 String newUsername = new String(bytes, "utf-8"); 解码(byte[]字节数组 ->String字符串 ):通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。 System.out.println("手动编码后的登录名:" + newUsername);
③查找tomcat根目录/conf/server.xml,找到如下节点: <Connector connectionTimeout="20000" port="8088" protocol="HTTP/1.1" redirectPort="8443"/> 添加如下属性:URIEncoding = "utf-8" -------------------------仅对get有效
post与get的使用场景:
get请求: ① <form action="" method="get"></form> ② <a href="">超链接</a> ③ window.location.href="" ④ 地址栏输入网址url,即为get请求 post请求: ① <form action="" method="post"></form> ② ajax指定post提交参数
处理响应结果的乱码
response.setCharacterEncoding("utf-8");//设置响应的内容为utf-8的编码格式response.setContentType("text/html;charset=utf-8"); //告诉浏览器使用指定的编码解析响应内容 text/html 表示一个HTML文档 text/plain 纯文本 text/xml XML文档
获取request请求头信息的Servlet
/* * 1.getHeaderNames() 获取所有请求头的名称 * * 请求头名称:accept 请求头名称:accept-language 请求头名称:cache-control 请求头名称:ua-cpu 请求头名称:accept-encoding 请求头名称:user-agent 请求头名称:host 请求头名称:connection */ Enumeration<String> headNames = request.getHeaderNames(); while(headNames.hasMoreElements()) { String headName = headNames.nextElement(); String headValue = request.getHeader(headName); System.out.println("请求头名称:" + headName + " 请求头值:" + headValue); } //2.getHeader(headName) 根据请求头名称获取请求头的值 String headValue = request.getHeader("host"); System.out.println("host:" + headValue); //3.服务端 System.out.println("协议:" + request.getScheme());// http System.out.println("服务器名称:" + request.getServerName()); //localhost System.out.println("服务器端口号:" + request.getServerPort()); //8088 System.out.println("项目名称(上下文路径):" + request.getContextPath()); // /day03_servlet_request System.out.println("当前servlet路径:" + request.getServletPath());// /GetHeadInfoServlet //http://localhost:8088 tomcat服务器根路径 //http://localhost:8088/day03_servlet_request 项目根路径 System.out.println(request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath()); //4.客户端 System.out.println("客户端IP地址:" + request.getRemoteAddr()); //127.0.0.1 System.out.println("客户端端口号:" + request.getRemotePort()); //51610 System.out.println("客户端请求方法:" + request.getMethod()); //GET System.out.println("客户端请求路径:" + request.getRequestURI()); // /day03_servlet_request/GetHeadInfoServlet
DBUtil设置注意事项
①config文件夹需放在src包内
②db.properties路径获取方式 加载外部配置文件db.properties String path = DBUtil.class.getResource("/config/db.properties").getPath(); properties.load(new FileInputStream(path));
JavaSE
MVC设计思想