黑马程序员技术交流社区

标题: 学习经历 [打印本页]

作者: A190103375    时间: 2019-8-5 16:42
标题: 学习经历
1.HttpServletRequest
        功能:
                1.获取参数
                        getContextPath() ---->获取虚拟路径
                        getParameter()getParameterMap()getParameterValues();
                        getSession(); ---->获取session对象
                        getCookies(); ---->获取所有的cookie
                        getHeader("键"); ----> user-agent : 用来解决浏览器兼容性问题
                2.请求转发
                        getRequestDispather("服务器端路径(不要加虚拟路径,因为tomcat帮你加了!!!)").forword(req,resp);
                3.作为域对象存储数据,只不过一次请求有效
                        setAttr
                        getAttr
                        removeAttr
2.HttpServletResponse
        功能:
                1.重定向
                        sendRedirect("路径") ---> 状态码302, 响应头: location
                2.会设置常见的响应头
                        setContextType ------>"content-type" --->命令浏览器以什么样引擎解析, 用什么编码解析
                        "content-disposition" ---->只有下载的时候才会使用
                       
                3.回写cookie
                        addCookie(cookie对象)
                4.回写响应体
                        getWriter().write("内容")
                        getOutputStream().write(字节数据)
                       
3.ServletContext
        功能:
                1.获取Mime类型 ---->告诉浏览器以什么引擎解析
                        getMimeType(文件名);
                2.作为域对象存储数据 ----> 整个项目共享, 用户之间共享的数据可以用这个来保存
                3.获取真实路径
                        getRealPath("路径")
                4.获取全局参数
                        getInitParameter("键");
4.Cookie
        功能:
                1.创建
                        Cookie c = new Cookie(字符串的键, 字符串的值);
                       
                2.操作
                        req.getCookies();
                        resp.addCookie(cookie对象)
                        setMaxAge(0)
                3.功能
                        setPath --->在同一个服务器中不同项目共享数据
                        setDomain ---->在不同服务器共享数据
                       
5.Session ---->是一个域对象, 默认作用范围是一次会话, 底层基于cookie的
        功能:
                1.创建
                        req.getSession();
                2.操作
                        setxxx,getxxx,removeattr
                       
6.web常见的乱码问题
        1.req获取参数乱码
                get:
                        参数在请求行中, 请求不准有中文,
                        tomcat7
                                的时候浏览器会将这些中文通过URLEncode编码成%AE的样子
                                tomcat7得到参数后, 会用URLDecode解码并且用ios-8859-1的编码组装,因为ios-8859-1不支持中文, 会乱码
                                tomcat7 解决乱码:
                                String  username = req.getParamter("username");
                                username = new String(username.getByte("iso-8859-1"),"utf-8");
                        tomcat8:
                                的时候浏览器会将这些中文通过URLEncode编码成%AE的样子
                                tomcat8得到参数后, 会用URLDecode解码并且用utf-8的编码组装,因为utf-8支持中文, 不会乱码
                               
                post:
                        因为底层通过 req.getReader获取的参数 , 此时getReader的流是tomcat提供的,而字符流内置的编码是iso-8859-1,
                        我们可以修改流的编码, 而且告诉浏览器以utf-8 的方式解析数据
                        req.setCharacterEncoding("utf-8");
                        字符流 = 字节码 + 编码
        2. resp响应中文的问题
                因为底层是通过resp.getWriter来操作,字符流内置一个编码,而且是tomcat提供的编码是iso-8859-1,会;乱码
                解决:
                        setContextType("text/html;charset=utf-8");-----> resp.setCharaterEncoding("utf-8"), setHeader("content-type","text/html;charset=utf-8")
        3.Cookie的乱码问题
                要存特殊字符的话, 要记得编码
        4.响应头的乱码问题:
                响应头不支持中文, 也要编码
7.路径问题:
                标签:
                        src
                        action
                        href
                        全部采用客户端路径, tomcat帮我们省略了http://ip地址:端口/
                        例如:
                                http://ip地址:端口/day15/index.html 省略成: /day15/index.html
                转发:
                        采用的服务器端路径,tomcat帮我们加了http://ip地址:端口/虚拟路径

                        重定向
                                采用客户端路径, tomcat帮我们省略了http://ip地址:端口/
                自己创建的流, 自己定义的file对象
                        什么都没加, 一定不要用相对路径, 要采用绝对路径, 一般和ServletContext一起出现!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2