统计
  • 建站日期:2021-03-10
  • 文章总数:518 篇
  • 评论总数:151 条
  • 分类总数:32 个
  • 最后更新:4月20日
文章 未分类

javaweb重点笔记初次整理

梦幻书涯
首页 未分类 正文

    

 

XML:重点知识* CDATA区:在该区域中的数据会被原样展示 *格式:<![CDATA [数据]]>*快速入门: *步骤: 1。导入罐包 2. 获取文档对象 3. 获取对应的标签元对象 4. 获取数据*代码: //2.1获取student.xml的路径 String path = JsoupDemo1.class.getClassLoader()。getResource(“student.xml”)。getPath();

//2.2解析xml文档,加载文档进内存,获取dom树--->文档 文档文档= Jsoup.parse(新文件(路径),“utf-8”);

// 3.获取元素对象 元素元素= document.getElementsByTag(“name”);的System.out.println(elements.size());

//3.1获取第一个名称的元素对象 元素= elements.get(0);

//3.2获取数据

String name = element.text(); 的System.out.println(名);*对象的使用:

1.Jsoup:工具类, 可以解析html或xml文档,返回文件 *解析:解析html或xml文档,返回文件

*解析 (文件输入,String charsetName):解析xml或html文件的。 * parse(String html):解析xml或html字符串 * parse(URL url,int timeoutMillis):通过网络路径获取指定的html或xml的文档对象 2.  文档:文档对象。代表内存中的dom树      *获取元素对象       * getElementById(String id):根据id属性值获取唯一的元素对象       * getElementsByTag(String tagName):根据标签名称获取元素对象集合       * getElementsByAttribute( String key):根据属性名称获取元素对象集合       * getElementsByAttributeValue(String key,String value):根据对应的属性名和属性值获取元素对象集合      3.  元素:元素元素对象的集合。  可以当做ArrayList <Element>来使用    4.  元素:元素对象      1.  获取子元素对象       * getElementById(String id):根据id属性值获取唯一的元素对象       * getElementsByTag(String tagName):根据标签名称获取元素对象集合        * getElementsByAttribute(String key):根据属性名称获取元素对象集合       * getElementsByAttributeValue(String key,String value):根据对应的属性名和属性值获取元素对象集合     2.获取属性值      * String attr(String key):根据属性名称获取属性值    元素attr(字符串attributeKey,布尔attributeValue)   此元素上设置一个布尔属性值.attributeKey   元素attr(字符串,字符串attributeValue)   在这个元素设置一个属性值。       3.  获取文本内容      * String text():获取文本内容        * String html():获取标签体的所有内容(包括字标签的字节串内容)    2.    XPath:XPath即为XML路径语言,  它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言     * 使用Jsoup的Xpath需要额外导入jar包。     * 查询w3cshool参考手册,使用xpath的语法完成查询     * 代码:      //1.获取student.xml的path            String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();            //2.获取Document对象            Document document = Jsoup.parse(new File(path), "utf-8");               //3.根据document对象,创建JXDocument对象        

//等价于:把document对象转换成JXDocument对象,        

//用JXDocument对象去获取标签,内容,属性,            JXDocument jxDocument = new JXDocument(document);               //4.结合xpath语法查询            //4.1查询所有student标签            List<JXNode> jxNodes = jxDocument.selN("//student");            for (JXNode jxNode : jxNodes) {                System.out.println(jxNode);            }               System.out.println("--------------------");               //4.2查询所有student标签下的name标签            List<JXNode> jxNodes2 = jxDocument.selN("//student/name");            for (JXNode jxNode : jxNodes2) {                System.out.println(jxNode);            }               System.out.println("--------------------");               //4.3查询student标签下带有id属性的name标签            List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");            for (JXNode jxNode : jxNodes3) {                System.out.println(jxNode);            }            System.out.println("--------------------");            //4.4查询student标签下带有id属性的name标签 并且id属性值为itcast               List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='itcast']");            for (JXNode jxNode : jxNodes4) {                System.out.println(jxNode);            }  快速查询:   String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();         Document document = Jsoup.parse(new File(path), "utf-8");         JXDocument jxDocument = new JXDocument(document);         List<JXNode> jxNodes = jxDocument.selN("//student//text()");         //返回值是一个集合1个或者多个结果       

System.out.println(jxNodes);       

返回值:  [张三 25 male 李四 24 female]       

List<JXNode> jxNodes1 = jxDocument.selN("//student/name/text()");         返回值:  张三 李四         JXNode selNOne = jxDocument.selNOne("//student/name/text()");        返回值是一个结果 张三        System.out.println(selNOne);         等价于:         JXNode selNOne1 = jxDocument.selNOne("//student/name");         Element element = selNOne1.getElement();         System.out.println(element);         返回值:  张三        System.out.println(element);         //返回值:  张三         //jxNodes.         System.out.println("-----------------------------");        Element element = jxNode.getElement();       System.out.println(element);       Tomcat--servlet知识点:        2. 启动报错:          1. 暴力:找到占用的端口号,并且找到对应的进程,杀死该进程          * netstat -ano,找到对应端口对应的pid,          在到任务管理器中找到进程,在点击pid,找到相应的pid关闭便可          2. 温柔:修改自身的端口号          * conf/server.xml           * <Connector port="8888(端口号)" protocol="HTTP/1.1"      connectionTimeout="20000"              redirectPort="8445" />       * 一般会将tomcat的默认端口号修改为80。80端口号是http协议的默认端口号。            * 好处:在访问时,就不用输入端口号       5. 关闭:       1. 正常关闭:tomcat文件夹中     *  bin/shutdown.bat        在启动窗口中按 ctrl+c             2. 强制关闭:     * 点击启动窗口的×       6. 配置:    * 部署项目的方式:         1. 直接将项目放到webapps目录下即可。          * /hello:项目的访问路径-->虚拟目录       * 简化部署:将项目打成一个war包, 再将war包放置到webapps目录下。        * war包会自动解压缩      在项目中的web.xml配置项目连接等价---@webserver("/xxxx")         4. 配置Servlet     在web.xml中配置:          <!--配置Servlet -->           <servlet>    <servlet-name>demo1</servlet-name>           

<servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>       

</servlet>              <servlet-mapping>               <servlet-name>demo1</servlet-name>               <url-pattern>/demo1</url-pattern>           </servlet-mapping>         * Servlet中的生命周期方法:   1. 被创建:执行init方法,只执行一次,一般用于加载资源    * Servlet什么时候被创建?     * 默认情况下,第一次被访问时,Servlet被创建     * 可以配置执行Servlet的创建时机。      * 在<servlet>标签下配置       1. 第一次被访问时,创建                    * <load-on-startup>的值为负数                2. 在服务器启动时,创建                    * <load-on-startup>的值为0或正整数   * Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的 2. 提供服务:执行service方法,执行多次    * 每次访问Servlet时,Service方法都会被调用一次。   3. 被销毁:执行destroy方法,只执行一次,一般用于释放资源    * Servlet被销毁时执行。服务器关闭时,Servlet被销毁    * 只有服务器正常关闭时,才会执行destroy方法。    * destroy方法在Servlet被销毁之前执行,一般用于释放资源 * Servlet3.0:   * 好处:    * 支持注解配置。可以不需要web.xml了。  请求体的信息:    * 请求消息数据格式   1. 请求行    请求方式 请求url 请求协议/版本    GET /login.html HTTP/1.1   * 请求方式:     * HTTP协议有7中请求方式,常用的有2种      * GET:       1. 请求参数在请求行中,在url后。       2. 请求的url长度有限制的       3. 不太安全      * POST:       1. 请求参数在请求体中       2. 请求的url长度没有限制的       3. 相对安全   2. 请求头:客户端浏览器告诉服务器一些信息    请求头名称: 请求头值    * 常见的请求头:     1. User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息      * 可以在服务器端获取该头的信息,解决浏览器的兼容性问题    2. Referer:http://localhost/login.html      * 告诉服务器,我(当前请求)从哪里来?       * 作用:        1. 防盗链:        2. 统计工作:   3. 请求空行    空行,就是用于分割POST请求的请求头,和请求体的。   4. 请求体(正文):    * 封装POST请求消息的请求参数的  * 字符串格式:    POST /login.html HTTP/1.1    Host: localhost    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2    Accept-Encoding: gzip, deflate    Referer: http://localhost/login.html    Connection: keep-alive    Upgrade-Insecure-Requests: 1       username=zhangsan  * 响应消息数据格式  重点:重点  3. request功能:   1. 获取请求消息数据    1. 获取请求行数据     * GET /day14/demo1?name=zhangsan HTTP/1.1     * 方法:      1. 获取请求方式 :GET       * String getMethod()       2. (*)获取虚拟目录:/day14       * String getContextPath()      3. 获取Servlet路径: /demo1       * String getServletPath()      4. 获取get方式请求参数:name=zhangsan       * String getQueryString()      5. (*)获取请求URI:/day14/demo1       * String getRequestURI():  /day14/demo1       * StringBuffer getRequestURL()  :http://localhost/day14/demo1      * URL:统一资源定位符 : http://localhost/day14/demo1 中华人民共和国       * URI:统一资源标识符 : /day14/demo1     共和国           6. 获取协议及版本:HTTP/1.1       * String getProtocol()     7. 获取客户机的IP地址:       * String getRemoteAddr()         2. 获取请求头数据     * 方法:      * (*)String getHeader(String name):通过请求头的名称获取请求头的值      * Enumeration<String> getHeaderNames():获取所有的请求头名称        3. 获取请求体数据:     * 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数     * 步骤:      1. 获取流对象       *  BufferedReader getReader():获取字符输入流,只能操作字符数据       *  ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据        * 在文件上传知识点后讲解     2. 再从流对象中拿数据           2. 其他功能:    1. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数     1. String getParameter(String name):根据参数名称获取参数值    username=zs&password=123     2. String[] getParameterValues(String name):根据参数名称获取参数值的数组  hobby=xx&hobby=game     3. Enumeration<String> getParameterNames():获取所有请求的参数名称     4. Map<String,String[]> getParameterMap():获取所有参数的map集合    * 中文乱码问题:      * get方式:tomcat 8 已经将get方式乱码问题解决了      * post方式:会乱码       * 解决:在获取参数前,设置request的编码request.setCharacterEncoding("utf-8");            2. 请求转发:一种在服务器内部的资源跳转方式     1. 步骤:      1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)      2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)    2. 特点:      1. 浏览器地址栏路径不发生变化      2. 只能转发到当前服务器内部资源中。      3. 转发是一次请求   3. 共享数据:     * 域对象:一个有作用范围的对象,可以在范围内共享数据     * request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据     * 方法:      1. void setAttribute(String name,Object obj):存储数据      2. Object getAttitude(String name):通过键获取值      3. void removeAttribute(String name):通过键移除键值对   4. 获取ServletContext:     * ServletContext getServletContext()  //获取所有参数   Map<String, String[]> map = request.getParameterMap();         User user = new User();         //创建beanutil工具类的jar包         //使用beanutil.             BeanUtils.populate(user,map);    //将获取所有参数map,来封装在User对象中,也就是所有参数被封装在map,然后BeanUtils.populate(1,2)    就map的对象映射在user对象中,也就导致User对象封装成功,无论多少参数都可以     3. 方法:     1. setProperty()     2. getProperty()     3. populate(Object obj , Map map):将map集合的键值对信息,封装到对应的JavaBean对象中    响应知识:  1. 响应行      1. 组成:协议/版本 响应状态码 状态码描述      2. 响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。       1. 状态码都是3位数字        2. 分类:        1. 1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码        2. 2xx:成功。代表:200        3. 3xx:重定向。代表:  302(重定向),  304(访问缓存)        4. 4xx:客户端错误。        * 代表:          * 404(请求路径没有对应的资源)          * 405:请求方式没有对应的doXxx方法        5. 5xx:服务器端错误。  代表:500(服务器内部出现异常)     2. 响应头:      1. 格式:头名称: 值      2. 常见的响应头:       1. Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式       2. Content-disposition:服务器告诉客户端以什么格式打开响应体数据        * 值:* in-line:默认值,在当前页面内打开        * attachment;filename=xxx:以附件形式打开响应体。  文件下载   3## Response对象  * 功能:设置响应消息   1. 设置响应行    1. 格式:HTTP/1.1 200 ok    2. 设置状态码:setStatus(int sc)    2. 设置响应头:setHeader(String name, String value)       3. 设置响应体:    * 使用步骤:     1. 获取输出流      * 字符输出流:PrintWriter getWriter()     * 字节输出流:ServletOutputStream getOutputStream()    2. 使用输出流,将数据输出到客户端浏览器 4   * 注意:     * 乱码问题:      1. PrintWriter pw = response.getWriter();获取的流的默认编码是ISO-8859-1      2. 设置该流的默认编码      3. 告诉浏览器响应体使用的编码     //简单的形式,设置编码,是在获取流之前设置            response.setContentType("text/html;charset=utf-8"); 5    * 路径写法:     1. 路径分类      1. 相对路径:通过相对路径不可以确定唯一资源       * 如:./index.html       * 不以/开头,以.开头路径      * 规则:找到当前资源和目标资源之间的相对位置关系        * ./:当前目录        * ../:后退一级目录      2. 绝对路径:通过绝对路径可以确定唯一资源       * 如:http://localhost/day15/responseDemo2  /day15/responseDemo2       * 以/开头的路径      * 规则:判断定义的路径是给谁用的?判断请求将来从哪儿发出        * 给客户端浏览器使用:需要加虚拟目录(项目的访问路径)         * 建议虚拟目录动态获取:request.getContextPath()         * <a> , <form> 重定向...        * 给服务器使用:不需要加虚拟目录         * 转发路径 6:重定向和请求转发的区别  * 案例:   1. 完成重定向    * 重定向:资源跳转的方式    * 代码实现:     //1. 设置状态码为302           response.setStatus(302);           //2.设置响应头location           response.setHeader("location","/day15/responseDemo2");          //简单的重定向方法           response.sendRedirect("/day15/responseDemo2");   * 重定向的特点:redirect     1. 地址栏发生变化     2. 重定向可以访问其他站点(服务器)的资源     3. 重定向是两次请求。不能使用request对象来共享数据    * 转发的特点:forward     1. 转发地址栏路径不变     2. 转发只能访问当前服务器下的资源     3. 转发是一次请求,可以使用request对象来共享数据 7:ServletContext对象## ServletContext对象:  1. 概念:代表整个web应用,可以和程序的容器(服务器)来通信  2. 获取:   1. 通过request对象获取    request.getServletContext();   2. 通过HttpServlet获取    this.getServletContext();  3. 功能:   1. 获取MIME类型:    * MIME类型:在互联网通信过程中定义的一种文件数据类型     * 格式: 大类型/小类型   text/html  image/jpeg   * 获取:String getMimeType(String file)     2. 域对象:共享数据    1. setAttribute(String name,Object value)    2. getAttribute(String name)    3. removeAttribute(String name)   * ServletContext对象范围:所有用户所有请求的数据   3. 获取文件的真实(服务器)路径    1. 方法:String getRealPath(String path)        String b = context.getRealPath("/b.txt");//web目录下资源访问            System.out.println(b);             String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目录下的资源访问           System.out.println(c);             String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目录下的资源访问           System.out.println(a); 8:cookei技术: 2. 快速入门:   * 使用步骤:    1. 创建Cookie对象,绑定数据     * new Cookie(String name, String value)    2. 发送Cookie对象     * response.addCookie(Cookie cookie)    3. 获取Cookie,拿到数据     * Cookie[]  request.getCookies()  3. 实现原理   * 基于响应头set-cookie和请求头cookie实现 4. cookie的细节   1. 一次可不可以发送多个cookie?    * 可以    * 可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。   2. cookie在浏览器中保存多长时间?    1. 默认情况下,当浏览器关闭后,Cookie数据被销毁    2. 持久化存储:     * setMaxAge(int seconds)      1. 正数:将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效      2. 负数:默认值      3. 零:删除cookie信息   3. cookie能不能存中文?    * 在tomcat 8 之前 cookie中不能直接存储中文数据。     * 需要将中文数据转码---一般采用URL编码(%E3)    * 在tomcat 8 之后,cookie支持中文数据。特殊字符还是不支持,建议使用URL编码存储,URL解码解析   4. cookie共享问题?    1. 假设在一个tomcat服务器中,部署了多个web项目,那么在这些web项目中cookie能不能共享?     * 默认情况下cookie不能共享    * setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录      * 如果要共享,则可以将path设置为"/"      2. 不同的tomcat服务器间cookie共享问题?     * setDomain(String path):如果设置一级域名相同,那么多个服务器之间cookie可以共享      * setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享     5. Cookie的特点和作用   1. cookie存储数据在客户端浏览器   2. 浏览器对于单个cookie 的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(20个)  * 作用:    1. cookie一般用于存出少量的不太敏感的数据    2. 在不登录的情况下,完成服务器对客户端的身份识别   10:JSP技术  1* Java Server Pages: java服务器端页面    * 可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码    * 用于简化书写!!! 2. 原理   * JSP本质上就是一个Servlet 3. JSP的脚本:JSP定义Java代码的方式   1. <%  代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。   2. <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置。   3. <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。 4. JSP的内置对象:   * 在jsp页面中不需要获取和创建,可以直接使用的对象   * jsp一共有9个内置对象。   * 今天学习3个:    * request    * response    * out:字符输出流对象。可以将数据输出到页面上。和response.getWriter()类似     * response.getWriter()和out.write()的区别:      * 在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。      * response.getWriter()数据输出永远在out.write()之前  10:Session技术   1. 概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HttpSession  2. 快速入门:   1. 获取HttpSession对象:    HttpSession session = request.getSession();   2. 使用HttpSession对象:    Object getAttribute(String name)     void setAttribute(String name, Object value)    void removeAttribute(String name)     3. 原理   * Session的实现是依赖于Cookie的。  4. 细节:   1. 当客户端关闭后,服务器不关闭,两次获取session是否为同一个?    * 默认情况下。不是。    * 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。      Cookie c = new Cookie("JSESSIONID",session.getId());            c.setMaxAge(60*60);            response.addCookie(c);  2. 客户端不关闭,服务器关闭后,两次获取的session是同一个吗?    * 不是同一个,但是要确保数据不丢失。tomcat自动完成以下工作     * session的钝化:      * 在服务器正常关闭之前,将session对象系列化到硬盘上     * session的活化:      * 在服务器启动后,将session文件转化为内存中的session对象即可。       3. session什么时候被销毁?    1. 服务器关闭    2. session对象调用invalidate() 。    3. session默认失效时间 30分钟     选择性配置修改     <session-config>            <session-timeout>30</session-timeout>        </session-config>  5. session的特点    1. session用于存储一次会话的多次请求的数据,存在服务器端    2. session可以存储任意类型,任意大小的数据  * session与Cookie的区别:    1. session存储数据在服务器端,Cookie在客户端    2. session没有数据大小限制,Cookie有    3. session数据安全,Cookie相对于不安全 

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

这篇文章最后更新于2019-9-6,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
请求体数据和响应体数据,响应和请求原始体,请求转发,重定向,session域共享
« 上一篇
123213
下一篇 »

发表评论

HI ! 请登录
注册会员,享受下载全站资源特权。
Array

日历

热门文章