辅助框架

本文深入探讨了多种编程技术,包括JSON数据处理、JUnit单元测试、日志框架Log4j、DOM4J XML操作、Maven项目管理和layUI前端框架应用,提供了详实的代码示例和配置指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

辅助框架

json

jsonObject
jsonArray

  • jackson

  • gson:gson 2.8jar;

    public static void main(String[] args) {
    		String str = "{\"id\":22,\"name\":\"ocean\"}";
    		Type o = new Gson().fromJson(str, Type.class);
    		System.out.println(o.getName());
    		System.out.println(new Gson().toJson(o));
    	}
    

调试junit 4.1

  • 引用

     <dependency>
    		<groupId>junit</groupId>
    		<artifactId>junit</artifactId>
    		<version>4.11</version>
    	</dependency>
    
  • 使用

    public class test1 {
    	
    	@Test
    	public void exe() {	//不能有返回值和参数
    		System.out.println(123);
    	}
    }
    
  • 断言
    批量方法测试时,验证结果是否成功
    TestCase.assertEquals(1>0, 100>0);

  • 类单元测试

    1. 创建junit/junit test cast
    2. under test 选择要测试的类
    3. next 选择测试的方法
  • 注解

    • 每个测试方法都运行
    1. @Before
    2. @After
    • 只能注解static方法,执行一次
    1. @BeforeClass
    2. @AfterClass
    • @RunWith:运行期,框架环境测试
    • @Ignore:方法排除
    • @Test

日志 log4j(sel4j)

  • 相当于system.out.print(),可以分类输出到文件

  • 7级信息输出

    1. DEBUG:输出调试信息;指出细粒度信息事件对调试应用程序是非常有帮助的
    2. INFO: 输出提示信息;消息在粗粒度级别上突出强调应用程序的运行过程。
    3. WARN: 输出警告信息;表明会出现潜在错误的情形。
    4. ERROR:输出错误信息;指出虽然发生错误事件,但仍然不影响系统的继续运行。
    5. FATAL: 输出致命错误;指出每个严重的错误事件将会导致应用程序的退出。
    6. ALL level:打开所有日志记录开关;是最低等级的,用于打开所有日志记录。
    7. OFF level:关闭所有日志记录开关;是最高等级的,用于关闭所有日志记录
  • Appender

    1. org.apache.log4j.ConsoleAppender(控制台)
    2. org.apache.log4j.FileAppender(文件)
    3. org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
    4. org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
    5. org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
  • layout 显示样式

    1. org.apache.log4j.HTMLLayout(以HTML表格形式布局)
    2. org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
    3. org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
    4. org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
  • 定义:

    1. 指定名称
      Logger log = Logger.getLogger("root");
    2. 指定当前类名称
      Logger log = Logger.getLogger(LogTest.class);
  • 使用:
    方法名是信息登记名称
    log.debug("")

  • 指定输出位置
    System.setOut(new PrintStream(new File("c:a.log")));

xml dom4j

Document doc =DocumentHelper.createDocument();
      	Element root=doc.addElement("aaaa");
	//add()   节点,属性,备注,文本(接口  ctrl+t 实现类)
	Element el1=new DefaultElement("bbbb");
      	el1.add(new DefaultAttribute("asd", "egg记得给人家"));
      	root.add(new DefaultText("dddddddddddddd"));
     	 root.add(el1);
	XMLWriter writer =new XMLWriter( new FileOutputStream("c:/a.xml"),
             	 		OutputFormat.createPrettyPrint());
      	writer.write(doc);
      	writer.close();
	读取:
	File file = new File("E:\\testData.xml");
           	 SAXReader reader=new SAXReader(); 
                  Document doc=reader.read(file);  //读取xml文件到Document中
           	 Element rootElement=doc.getRootElement();//获取xml文件的根节点

爬虫

  • 请求发送

    1. GET
      Connection conn = Jsoup.connect(url);
      Document doc = conn.get();
      
    2. POST
      Connection conn= Jsoup.connect(url);
      conn.data(key,value);   // 可循环添加
      conn.header("Cookie",cookie);   //插入cookie , 头文件的形式
      Document doc = conn.post();
      
  • 解析html,得到element

    //选择器,查出集合
    Elements els = doc.select(".all-img-list>li");
    			for(Element el:els) {
    				String t = el.select(".book-mid-info h4 a").first().text();
    				DBHelper.executeUpdate("insert into type(name) values(?)", t);
    			}
    
  • 获取内容

    1. text()
    2. html()
    3. attr()
    4. children()
  • 反爬虫:

    1. Ajax 重定向
    2. token签名认证
    3. http header数据
    4. 动态页面(每次访问类名自动更换),(class,标签)动态
  • API

    1. 交警、保险
    2. bat公司,头条,淘宝,360
    3. 定制产品,短信,地图,人工智能
    4. API数据中心-app key

Maven

maven test验证jar是否正确

项目构建框架,自动导入依赖jar包

  • pom: 项目对象模板
    pom.xml设置加入编译路径
  • 仓库
    1. 公共仓库:官方
    2. 私人库:user/.m2/repository 文件夹
    3. 私服:公司库
  • 查找:百度https://mvnrepository.com/
  • 目录结构:
    1. main:主目录
      • java:源码
      • resource:配置文件,最终到编译路径
      • webapp:站点文件夹
    2. test:单元测试目录
      • java:测试源码
    3. target:目标文件,自动生成
  • 打包方式
    1. war:网站发布文件
    2. jar包
    3. pom:父项目
  • 包scope
    1. provided:(最常用)全部阶段可用,无传递性
    2. test:测试和编译时使用
    3. runtime:运行和测试时使用
    4. system:(一般不用)
    5. compile:全部阶段可用
  • 命令mvn
    1. build:编译,重置target文件夹
    2. clean:清理缓存,最好经常使用
    3. install:加入到本地仓库,打包jar
    4. package:生成war文件
    5. deploy:发布到远程仓库

layUI前端框架

  • 功能:包含所有bootstrap功能,css样式,js组件管理(Ajax数据更新)

  • table 数据表格:

    1. 换页查询:url,cols

      <table id="demo" lay-filter="test"></table>
      layui.use('table', function(){
        var table = layui.table;
      table.render({
          elem: '#demo'
          ,height: 312
          ,url: 'Book/index' //数据接口
          ,page: true //开启分页
          ,cols: [[ //表头
            {field: 'id', title: 'ID', width:80, sort: true, fixed: 'right'}
            ,{field: 'name', title: '用户名', width:280}
      
    2. json数据接收

      StringBuilder s = new StringBuilder("{\"code\": 0,\r\n" + 
      				"  \"msg\": \"\",\r\n" + 
      				"  \"count\": 1000,\"rows\":");
        
      		s.append(objectMapper.writeValueAsString(o));
      		s.append("}");
      		resp.getWriter().write(s.toString());
      加入属性
       ,parseData:function (res){
      	  return {
      		  "code":res.code,
      		  "msg":res.msg,
      		  "count":res.count,
      		  data:res.rows
      	  }
        } 
      
    3. 行按钮

      <script type="text/html" id="barDemo">
      <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
      <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
      </script>
      列属性加入
       ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150,align:'center'}
      事件
       //obj 行      obj.data 行数据    data.id 列
        //test  是table的lay-filter="test" 属性
        table.on('tool(test)', function(obj){  
            var data = obj.data;
            if(obj.event === 'del'){   ///lay-event 属性
                    layer.alert("已删除id为"+data.name);
            }
        });
      
  • 提示框

    layer.confirm('真的删除行么', function(index){
                  layer.close(index);
            });
    
     layer.alert("已删除id为"+data.name);
    
  • form表单

    1. 提交

      layui.use('form', function(){
        var form = layui.form;
        form.on('submit(formDemo)', function(data){
          layer.msg(JSON.stringify(data.field));
          return false;
        });
      });
      
    2. 赋值
      form.val("formTest", json)

    3. 表单验证

      <input type="text" lay-verify="required|phone|number">
      自定义校验器
      form.verify({
        username: function(value, item){ //value:表单的值、item:表单的DOM对象
          if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){
            return '用户名不能有特殊字符';
          }
          if(/(^\_)|(\__)|(\_+$)/.test(value)){
            return '用户名首尾不能出现下划线\'_\'';
          }
          if(/^\d+\d+\d$/.test(value)){
            return '用户名不能全为数字';
          }
        }
        
        //我们既支持上述函数式的方式,也支持下述数组的形式
        //数组的两个值分别代表:[正则匹配、匹配不符时的提示文字]
        ,pass: [
          /^[\S]{6,12}$/
          ,'密码必须6到12位,且不能出现空格'
        ] 
      });      
      
  • select Ajax获取

    <div class="layui-form" lay-filter="boardFilter">
    
    layui.form.render('select','boardFilter');
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值