码迷,mamicode.com
首页 > Web开发 > 详细

web核心基础

时间:2020-11-07 16:42:59      阅读:32      评论:0      收藏:0      [点我收藏+]

标签: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<Element> elements = root.elements();

            

             /*获得属性     attribute()

              *获得节点     element()

              */

             //创建List<Emp>保存所有员工对象

             List<Emp> list = new ArrayList<Emp>();

             //遍历子节点

             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<Emp> emps = new ArrayList<Emp>();

             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的区别。

  1. drop table 删除结构,

truncate table和delete from 删除记录。

  1. truncate table属于DDL,delete from属于DML
  2. truncate table会清除id,delete from不会
  3. truncate table会进行事务管理,不能找回,d可以

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

 

  1. jsp简介

 

 

 

  1. jsp基本语法

 

 

 

 

 

 

 

for循环相当于servlet中的内容,因为小脚本中不能嵌套两个语句,所以要用两个小脚本写for。

 

 

 

 

 

 

 

  1. jsp内置对象

Request,session,application,pageContext可以作为域对象存储数据,4种范围对象作用域从小到大顺序如下:pageContext----request----session----application。

内置参数在jsp中已经定义好了,可以直接使用

 

创建对象,实现转发

 

 

 

 

 

 

 

 

  1.  jsp标签

 

 

静态(指令)

 

动态

 

 

Cookie和Session

 

  1. Cookie简介     (状态管理)

将客户端与服务器之间多次交互当作整体来看待,并将多次交互所涉及的数据即状态保存下来。状态指的是数据,管理指的是多次交互时对数据的修改。

 

(状态管理) 状态指的是数据,管理指的是增删查改等操作。

  1. Cookie应用

 

 

Cookie只能保存字符串不能保存对象等复杂数据

 

 

 

 

  1. Cookie应用—生存时间

 

 

 

注:如果是低版本,会出现乱码

 

Cookie特点

1.只能保存少量数据,长度有限,4kb左右,只能保存字符串,不能保存复杂对象类型。

2.Cookie可以被用户禁止

3.传输过程中,安全性很低。

  1. Session简介

 

 

 

  1. Session应用

 

 

 

 

  1. Session应用2

用login.jsp填表如果有这个用户的话就通过servlet(验证)访问index.jsp。

(Session登录并且保护Index.jsp资源。)

 

 

 

 

  1. Session应用—url重写

 

 

 

 

 

  1. Session生命周期

 

 

 

 

EL表达式和JSTL标签库

 

  1. EL简介

 

 

  1. EL语法1

 bean为一个java类对象。

 

 

 

 

 

 

 

 

访问bean属性

 

 

 

输出简单运算结果

 

 

获取请求参数

 

 

 

 

  1. EL语法2
  2. Jstl简介

 

 

  1. Jstl标签库

 

1.导包(mys..中有不用在导了)2.引用

 

 

 

 

 

 

 

 

 

 

 

  1. Jstl标签库-foreach

 

 

 

 

 

 

  1. Jstl标签库-其他标签

 

 

 

web核心基础

标签:win   leo   exception   har   reader   tno   tchar   oca   实体类   

原文地址:https://www.cnblogs.com/fayfay/p/13938591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!