JavaEE-Web阶段的一些知识点汇总
一,解决乱码问题: 1,浏览器向服务器提交的信息中含有中文: get方式提交: get的参数都藏在请求行中,请求行中编码是固定ISO8859-1; 解决方案: 通过String的构造方法: newString(文件名.getByte("ISO8859-1"),"UTF-8"); post方式提交: post的方式参数藏在请求体中,通过setCharacherEnconding()方法将请求体中的编码改成UTF-8; request.setCharacherEnconding("UTF-8"); 2,服务器向浏览器输出的信息含有中文: 设置响应头: 响应头的编码是固定的ISO-8859-1,所有我们需要给浏览器能看懂的东西 if(header.contains("Firefox")){ filename = base64EncodeFileName(filename); }else{ filename = URLEncoder.encode(filename, "UTF-8"); } (由于火狐浏览器的特殊性,需要为其建立单独的转码方式) public static String base64EncodeFileName(String fileName) { BASE64Encoder base64Encoder = new BASE64Encoder(); try { return "=?UTF-8?B?" + new String(base64Encoder.encode(fileName .getBytes("UTF-8"))) + "?="; } catch (UnsupportedEncodingException e) { e.printStackTrace(); throw new RuntimeException(e); } } 设置响应体: getOutputStream getWriter setContextType("text/html;charset=UTF-8") || setHeader("Context-Type","text/html;charset=UTF-8") setCharaterEnconding("UTF-8"); 二,Web中的路径问题 1.浏览器端访问Servlet;HTML;JSP * 浏览器端如果想直接访问Servlet的话 路径的编写:使用: /工程名/servlet的虚拟路径 * 浏览器如果想要直接访问.html.jsp或者其他静态资源 路径的编写:使用: /工程名/资源所在的路径 2.从Servlet中跳转到其他 * servlet A想要跳转其他servlet B 1.重定向 路径的编写:使用: /工程名/B对应的虚拟路径 2.请求转发 路径的编写:使用: /B对应的虚拟路径 * servlet A想要跳转到 .html或者.jsp 1.重定向 路径的编写:使用: /工程名/.jsp或者.html所在的子路径 2.请求转发 路径的编写:使用: /.jsp或者.html所在的子路径 *servlet想要读取项目下文件 1.需要用ServletContext的对象来读取 1.ServletContext.getResouceAsStream("资源路径(不用再加工程名)") 2.ServletContext.getRealPath("资源路径(不用再加工程名)") 三,Cookie和Session * Cookie本身大小和个数是有限制的 * Session没有限制,Session的数据保存在服务器端 * Session是基于Cookie实现的. * request的getSession()方法获取Session; * Session是域对象 创建:服务器第一次调用getSession()时创建Session 销毁:三种情况销毁session 1.session过期,默认时间是30分钟 2.非正常关闭服务器 3.手动调用session.invalidate(); * Session的作用的范围: 多次请求(一次对话) 四,JSP JSP JavaServer Pages(Java服务器端的页面) JSP的脚本 <%!%> :翻译成Servlet的成员内容 <% %> :翻译成Servlet中的service方法内部的内容,定义类&变量 <%=%> :翻译成Servlet中的service方法中的输出内容 JSP自身的内容 JSP的注释 可以用HTML的注释<!--注释-->,一直有 java代码的注释符号以及内容要写进<%%>里,翻译成Servlet后存在,翻译成HTML后消失 JSP自身的注释<%--注释--%>,在翻译成Servlet后,这类注释消失 JSP的指令 <%@指令名称 属性名称="属性值" 属性名称="属性值"...%> JSP中有三个指令 page指令:用来设置JSP的 isELIgnored:设置JSP中是否忽略EL表达式,默认值是false不忽略. errorPage:设置出错后跳转到的网页 isErrorPage: include指令 taglib指令 JSP的内置对象 在JSP中可以直接使用的对象 JSP中有9大内置对象 request———— HttpServletRequest response———— HttpServletResponse session application page pageContext config out exception page内置对象:真实对象时Object,就是JSP翻译成Servlet后的类的引用 out内置对象: pageContext内置对象:
|