web核心基础
2020-12-25 04:27
标签:win leo exception har reader tno tchar oca 实体类 XML 一.xml简介 二.xml语法 1.文档声明 version代表当前xml版本 2.元素 3.属性 4.注释 + 5.CDATA区、特殊字符 6.处理指令 三.xml解析 1.Dom解析 得到根节点 getDocumentElement() 根据属性名获得id属性值 getAttribute(); 遍历元素 item() 得到第一个孩子 getFirstChild(); 得到节点的文本值 getNodeValue(); 2.Sax解析 类继承DefaultHandler,是解析xml的基类。 这里要说明的是sax使用的工厂设计模式,通过SAXParserFactory 获取解析parser ,在从解析器中获得解析xml文件的xmlReader,但是在xmlReader读取流式的xml文件时,需要完成一个RSSHandler的设置,RSSHandler是继承的DefaultHandler, 3.Dom4j package com.demo; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.junit.Test; import com.entity.Emp; public class TestDomFJ { public static void main(String[] args) throws Exception { //创建SAXReader解析器 SAXReader reader = new SAXReader(); //指明解析的文件,解析文件,获得Document文档 Document doc = reader.read(new File("src/com/Emplist.xml")); //获得根节点 Element root = doc.getRootElement(); //获得根节点下的所有子节点 List /*获得属性 attribute() *获得节点 element() */ //创建List List //遍历子节点 for(Element element : elements){ //先获得节点的属性再获取值 String id = element.attribute("id").getValue(); //直接根据节点名获得节点中文本值 //element.elementText("name"); //先获得节点在获得节点值 String text = element.element("name").getText(); String age = element.elementText("age"); String gender = element.elementText("gender"); String salary = element.elementText("salary"); Emp emp = new Emp(Integer.parseInt(id),text,Integer.parseInt(age),gender,Double.parseDouble(salary)); list.add(emp); } //输出list System.out.println(list); } /*添加 添加节点 addElement() 添加文本值 addText( ) 添加子节点,并设置文本 addElement().addText() 添加属性 addAttribute( , ) */ @Test public void testAdd() throws Exception{ //list存放Emp对象 List emps.add(new Emp(1,"zs",33,"男",9000.0)); emps.add(new Emp(2,"ls",18,"女",8000.0)); emps.add(new Emp(3,"ww",20,"男",10000.0)); //创建文档对象 Document doc = DocumentHelper.createDocument(); //创建根节点 Element root = doc.addElement("list"); for(Emp emp :emps){ //向根元素中添加名为emp的子元素 Element ele = root.addElement("emp"); //为emp元素添加id属性,并设置属性值 ele.addAttribute("id",emp.getId()+""); //添加子节点,并设置节点中的文本值 ele.addElement("name").addText(emp.getName()); ele.addElement("age").addText(emp.getAge()+""); ele.addElement("gender").addText(emp.getGender()); ele.addElement("salary").addText(emp.getSalary()+""); } //通过XMLWriter生成物理文件 //创建输出流,指明输出路径 FileOutputStream fos = new FileOutputStream("src/com/EmpList1.xml"); XMLWriter writer = new XMLWriter(); //先设置输出流 writer.setOutputStream(fos); //将文档写出到指定路径中 writer.write(doc); writer.close(); } /* 删除remove() */ @Test public void testRemove() throws Exception{ //使用SAXReader读取文档 SAXReader saxReader = new SAXReader(); Document doc = saxReader.read("src/com/EmpList1.xml"); //获取节点 Element root = doc.getRootElement(); Element element = (Element)root.elements().get(0); System.out.println(element.attribute("id")); //为节点删除属性 element.remove(element.attribute("id")); System.out.println(element.attribute("id")); Element name = element.element("name"); System.out.println(name.getText()); //删除节点:必须得到父节点删除他,不能自己删除自己 element.remove(name); System.out.println(element.element("name").getText()); } @Test public void testUpdate() throws Exception{ SAXReader sax = new SAXReader(); Document doc = sax.read("src/com/EmpList1.xml"); //获取根节点 Element root = doc.getRootElement(); Element e2 = (Element)root.elements().get(1); //获取id属性 Attribute id = e2.attribute("id"); System.out.println(id.getValue()); //修改id属性 id.setValue("22"); System.out.println(id.getValue()); //获取name节点 Element name = e2.element("name"); System.out.println(name.getText()); //修改name的文本值 name.setText("李四1"); System.out.println(name.getText()); } } Web服务器 1.服务器简介 两种架构 2.tomcat目录结构 bin中, .bat是在windows系统中可执行的, .sh是在Unix系统中可以执行的。 3.tomcat应用 打开bin目录下的startup.bat运行(显示多少豪秒)即为成功,打开浏览器输入http://127.0.01:8080或者localhost:8080或者http:/192.168.1.95:8989可访问。 (tomcat安装即访问) Tomcat配置的问题 数据库 1.数据库简介 2.数据库安装 3.数据库数据类型 char()定长 不太准确,会浪费空间,但如果知道字符串长度,使用效率高 varchar()可变长 不会浪费空间 4.Sql语句 使用软件heidesql.exe,因为它便捷,左边是图形化界面。可以手动创建数据库和数据库表。 单行注释-- 多行注释/* */; utf-8写成utf8; DDL DML DQL DCL ,TCL以后讲 DDL 创create 改alter 删drop 创建外键表 DML truncate table ,delete from以及drop table的区别。 truncate table和delete from 删除记录。 DCL DQL 5.完整性约束 6.多表查询 对于连接查询,where 后面的如果是单个值用=, 如果是集合要用in. JDBC 一. jdbc简介 二. Jdbc对象介绍 1.连接数据库 编码问题 数据库和myeclipse都设置为utf-8,url后加 ?userUnicode=true&characterEncoding=utf-8; 2.statement Statement增删改用的是statement.executeUpdate(sql) 查询用resultset存放结果集。 数字下标也可以用字段名代替。 哪个资源后开启就先关闭 3 PreparedStatement 三. 批处理 四. 工具类 conf包表示配置文件 ,建一个文件properties存放键值对数据,为了方便修改。 Util包是工具包。 加载驱动用静态代码块只需加载一次,不会浪费资源。 测试 五. 事务 怎末设置cmd的编译语言? 找到mysql的路径,my.ini文件(MYSQL数据库中使用的配置文件)中default-character-set=…设置为utf-8; 使用事务控制将两个执行代码绑定在一起。 在基础上改三个地方将两个事务绑定。 例二 修改三个地方 ,关于threadLocal。创建,使用,移除 使用threadLocal优化配置,设置一个代码只需一个线程。 测试类:结果为前三个值相同,最后一个不同。 六. 连接池 修改三个地方 1.声明连接池2.创建连接池 3.获取连接池 使用连接池的connection对象,节约资源。 七. 三层架构 ORM思想 操作数据库的表放在sql中, entity包是sql包对应的实体包,每一个包都要对应一个实体。 1. RowMapper处理结果集 Rowmapper接口,accountrowmapper类继承接口。 测试类 查询一个account. 查询多个account(用list), 先创建对象,然后在Sql后引用对象mapprerow方法。 EmpRowmapper对象中的方法是处理结果集。(先获得查询的值,并且将她赋值给新建的emp对象,并返回)。 2. Jdbc template修改封装 a(Object…object)可变长参数,可以有一个参数,可以多个参数,可以没有参数。 3. Template查询封装 Servlet 一.servlet简介 二.servlet生命周期1 初始化和实例化第一次访问就会加载,不会在执行。再更新一次就会加载一次就绪阶段。最后移除程序才会销毁。 web-xml修改会自动更新,但是sevlet java 文件中修改必须重新部署。可以在tomcat中conf下context.xml下加一个属性reloadable=“true”中就不用重新部署。 三.servlet生命周期2(同上) 四.ServletConfig对象 经常使用的有getInitParameter();获得初始化参数 通过注解查询servlet 五.ServletRequest对象 对于浏览器的响应:200服务器响应成功,404资源不存在 500服务器内部发生错误 302重定向 304查找本地缓存 常用的有getParamter(xxx) 接受一个值。 HttpServletRequest, HttpServletResponse用子类不用父类ServletRequest,ServletResponse,因为除了继承父类的方法外,还有自己的一些方法。 上两图黑色箭头表示编解码的代码。 //接收与客户端数据以utf-8解码 request.setCharacterEncoding("utf-8"); //解决输出中文乱码 response.setContentType("text/html;charset=utf-8"); 六.ServletResponse对象 服务器做出响应 七.ServletContext对象 GetAttribute() ,setAttribute();作为域对象存储数据 每访问一次,浏览次数加一。 八.servlet 与jdbc-ems项目搭建 Conf 配置文件 Dao 直接控制数据库层还有service ,view包 Entity是sql对应的实体类, Rowmapper中处理结果集,封装成对象。一个为接口,一个为继承类。 Util为工具类(程序可能用到的统一代码) 外部引入的包放到WebRoot下的lib包中。 九.servlet与jdbc-ems查询 十.servlet与jdbc-ems添加 十一.servlet与jdbc-ems修改 十二.servlet与jdbc-ems删除与合并 JSP for循环相当于servlet中的内容,因为小脚本中不能嵌套两个语句,所以要用两个小脚本写for。 Request,session,application,pageContext可以作为域对象存储数据,4种范围对象作用域从小到大顺序如下:pageContext----request----session----application。 内置参数在jsp中已经定义好了,可以直接使用 创建对象,实现转发 静态(指令) 动态 Cookie和Session 将客户端与服务器之间多次交互当作整体来看待,并将多次交互所涉及的数据即状态保存下来。状态指的是数据,管理指的是多次交互时对数据的修改。 (状态管理) 状态指的是数据,管理指的是增删查改等操作。 Cookie只能保存字符串不能保存对象等复杂数据 注:如果是低版本,会出现乱码 Cookie特点 1.只能保存少量数据,长度有限,4kb左右,只能保存字符串,不能保存复杂对象类型。 2.Cookie可以被用户禁止 3.传输过程中,安全性很低。 用login.jsp填表如果有这个用户的话就通过servlet(验证)访问index.jsp。 (Session登录并且保护Index.jsp资源。) EL表达式和JSTL标签库 bean为一个java类对象。 访问bean属性 输出简单运算结果 获取请求参数 1.导包(mys..中有不用在导了)2.引用 web核心基础 标签:win leo exception har reader tno tchar oca 实体类 原文地址:https://www.cnblogs.com/fayfay/p/13938591.html