A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© CHNing 初级黑马   /  2018-5-21 16:04  /  634 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ServletContext和JSP
读文件问题
                路径问题:
                        根据JVM运行路径为当前路径(启动tomcat路径)
                ServletContext
                        InputStream getResourceAsStream(String path)                根据传入的路径返回一个输入流
                        路径在项目发布到tomcat后的根路径,必须斜杠开头 (表示根路径)
                        String getRealPath(String path)                                获取磁盘开头绝对路径
                        String getMimeType(String name)                        获得文件MIME类型
                        String getInitParameter(String name)                获取初始化参数
                        Enumeration getInitParameterNames()                获取所有Init参数
        类加载器读WEB工程中文件
                在获取不到ServletContext对象时使用
                获取一个类加载器:InputStream 对象.class.getClassLoader().getResourceAsStream();
                类加载器内部会判断,如果是WEB项目,默认会去WEB-INF下找文件,传统项目是项目根路径
        文件下载方式
                一种:超链接下载, 直接把文件类型放到链接中,--浏览器必须不支持这个文件才会自动下载
                二种:手动编写代码完成下载
                设置两个头和一个流:
                        Content-type                                文件MIME类型
                        先通过.getMimeType()获取文件类型
                        Content-Disposition                        以下载形式打开文件                        attachment;filename=文件名
                        InputStream                                文件输入流
                文件名乱码问题
                        根据浏览器解决:
                                判断浏览器:
                                        获取浏览器头文件s
                                火狐浏览器:
                                        下载时需要把文件名转换成Base64
                                其他浏览器:
                                String URLEncoder.encode(文件名);
        Servelt响应到浏览器乱码问题:
        字节
                在把字符串转成字节时设置编码,设置编码和浏览器打开时声明编码一致
        字符       
                输出字符前必须设置字符编码
                        设置字符编码:setHeader("Content-Type","text/html;charset=UTF-8");
        设置response缓冲区编码/POST解决乱码
                response.setCharacterEncoding("UTF-8");
                setContentType("text/html;charset=UTF-8");
        ServletRequest
        功能一
                String getMethod()                获取请求方式
                StringBuffer getRequestURL()        获取请求路径(http://开始)
                String getRequestURI()        获取当前路径从工程路径开始
                String getRemoteAddr()        获取IP地址
                String getContextPath()        获取工程名
        功能二
                String getParameter(String) 获取请求过来的参数
                -- getAttribute和setAttribute只用WEB内部服务器请求时
                void setAttribute(String)
                String getAttribute(String)
                void removeAttribute(String)
        作为域对象
                范围:一次请求的范围
                创建和销毁:客户端向服务器发送请求后,
                创建一个Request对象
                服务器做出响应后销毁
        重定向和转发区别
                重定向
                        重定向后浏览器地址会改变成重定向后的地址
                        客户端        请求地址到        服务器
                        服务器        返回重定向        客户端
                        客户端        在请求重定向        服务器
                        重定向可以到任意网站
                        需要写工程名
                转发
                        getRequestDispatcher(String path).foward();
                                转发后地址栏还是不会改变
                                转发只能到当前工程页面
                                转发路径不用带工程名


        字符流
                字节流和字符流互斥,只能用其中一种
        from提交表单中有中文时乱码
                Post解决方案:
                        把参数放在请求体中了
                        HttpServelt下的setCharacterEncoding(String);
                Get解决方案:
                        中文到地址栏浏览器会自动把中文解码,服务器收到中文解码数据后在进行ISO8859-1编码,所以需要先进行ISO8859-1解码,在URLDncoder编码
        会话技术
                Cookie
                        存储在客户端中
                        客户端请求服务器时,把Cookie数据保存在请求中,服务器响应时把Cookie返回给浏览器
                        Cookie操作
                                以键值对形式存储
                                创建Cookie
                                        Cookie cookie = new Cookie(String key,String value)
                                        String getName()                获取Cookie名字
                                        String getValue()                获取Cookie值
                                        String setDomain(String) 设置有效域名
                                        String setPath(String)        设置Cookie有效路径
                                        void setMaxAge(int maxAge) Cookie有效时间(秒)
                                指定时间内不操作才会销毁
                                会话级别Cookie:默认关闭浏览器Cookie自动销毁
                                持久级别Cookie:设置Cookie有效时间。手动销毁持久级别Cookie
                                Cookie存储中文问题
                                        通过URLEncoder编码和URLDncoder解码实现存储中文问题
        HttpServletResponse
                响应给浏览器Cookie
                        void addCookie(Cookie cookie)
        HttpServeltRequest
                获取所有浏览器端Cookie
                        Cookie[] getCookies()




        Session
                范围:从创建到浏览器关闭
                客户端和服务器交换Session数据时,都会通过Cookie提供给一个SessionID(类似钥匙),保证一个客户端一个Session
        JSP
                动态网页开发技术
                JSP = HTML+JAVA+JSP内置
                打开JSP网页时,会翻译成一个.java文件
                JSP嵌入JAVA代码
                一种:
                        <!%        JAVA代码;        %>                :翻译成类中成员部分,定义变量,定义方法,定义类
                        <%        JAVA代码;        %>                :Java代码,翻译到Servlet方法内部中内部
                        <%=          表达式        %>(out.print())                        :JSP内部表达式
                ${ 变量 }
                        pageContext.request.contextPath                        获取当前工程名

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马