显示用户偏好效果 ajax代码效果 accessrandomfile
创建springboot工程
spring:datasource:driver-class-name: oracle.jdbc.driver.OracleDriverurl: jdbc:oracle:thin:@192.168.100.151:1521:orclusername: cmpassword: okmybatis:mapper-locations: classpath*:mapper/*.xmltype-aliases-package: com.njbdqn.myspb1.entity
server:port: 8888
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="plugin/bootstrap.3.2.0/css/bootstrap.min.css"/>
</head>
<body><a href="javascript:;" data-href="shopid=1&e=nanjing" onclick="send(this)"><img src="img/TB2333XwkCWBuNjy0FaXXXUlXXa_!!0-saturn_solar.jpg_230x230.jpg" alt=""/></a><script type="text/javascript" src="plugin/jquery/jquery-3.6.0.min.js"></script><script type="text/javascript" src="js/log.js"></script>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.njbdqn</groupId><artifactId>myspb1</artifactId><version>0.0.1-SNAPSHOT</version><name>myspb1</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version></dependency><dependency><groupId>com.oracle</groupId><artifactId>ojdbc6</artifactId><version>11.2.0.1.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
function send(obj) {//获取点击超链接上的data-href中的数据var dh = $(obj).attr("data-href");//获取当前时间//组装信息为json格式var params = dh.split("&");var sendInfo = {browser:getBrowserInfo(),actionTime:currentTime(),actionType:"CLICK",shopid:params[0].split("=")[1],addr:params[1].split("=")[1]}//向后台发送日志数据$.ajax({type:"POST",url:"http://localhost:8888/log",data:{"logInfo":JSON.stringify(sendInfo)}})}function currentTime() {var date = new Date();return date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
}function getBrowserInfo() {var Sys = {};var ua = navigator.userAgent.toLowerCase();var re = /(msie|firefox|chrome|opera|version).*?([\d.]+)/;var m = ua.match(re);try{Sys.browser = m[1].replace(/version/, "'safari");Sys.ver = m[2];}catch(e){console.log("getBrowserInfo fail.")}return Sys;
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njbdqn.myspb1.dao.BankDAO"><select id="findAll" resultType="bank">select * from bank</select><insert id="insertBanK" parameterType="bank">insert into bank values(#{id},#{name},#{money})</insert><delete id="deleteBank" parameterType="int">delete from bank where id=#{id}</delete><update id="updateBank" parameterType="bank">update bank<set><if test="name != null">name=#{name},</if><if test="money != -1">money=#{money}</if></set><where><if test="id !=0">id=#{id}</if></where></update>
</mapper>
package com.njbdqn.myspb1;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.njbdqn.myspb1.dao")
public class Myspb1Application {public static void main(String[] args) {SpringApplication.run(Myspb1Application.class, args);}}
package com.njbdqn.myspb1.services;import org.springframework.stereotype.Service;import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;@Service
public class WriterLogService {public synchronized void write(String info) {//生成对于的文件名//今天的文件是否存在 如果不存在就创建一个 如果存在就直接把数据写在文件最后File file = new File("d:/mylog1/"+getFileName());try {if (!file.exists()) {file.createNewFile();}} catch (IOException e) {e.printStackTrace();}try {//写文件RandomAccessFile raf = new RandomAccessFile(file,"rw");raf.seek(file.length());raf.writeUTF(info+"\n");raf.close();} catch (IOException e) {e.printStackTrace();}}private String getFileName(){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String name = null;try {name = "log_"+sdf.format(new Date())+".log";} catch (Exception e) {e.printStackTrace();}return name;}
}
package com.njbdqn.myspb1.services;import com.njbdqn.myspb1.dao.BankDAO;
import com.njbdqn.myspb1.entity.Bank;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource;
import java.util.List;
//@Component == @Service new 对象存放到spring容器中
@Service
@Transactional //开启自动事务
public class BankService {@Resourceprivate BankDAO bdao;public List<Bank> fall(){return bdao.findAll();}public void save(Bank bank) {bdao.insertBanK(bank);}public void del(int uid) {bdao.deleteBank(uid);}public void update(Bank bank) {bdao.updateBank(bank);}
}
package com.njbdqn.myspb1.entity;public class Bank {private int id;private String name;private int money;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getMoney() {return money;}public void setMoney(int money) {this.money = money;}
}
package com.njbdqn.myspb1.dao;import com.njbdqn.myspb1.entity.Bank;import java.util.List;public interface BankDAO {public List<Bank> findAll();//增public void insertBanK(Bank bank);//删除public void deleteBank(int id);//修改public void updateBank(Bank bank);
}
package com.njbdqn.myspb1.controller;import com.njbdqn.myspb1.services.WriterLogService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RestController
public class LogCtrl {@Resourceprivate WriterLogService wls;//埋点@RequestMapping("/log")public String log(String logInfo){wls.write(logInfo);return "ok";}
}
package com.njbdqn.myspb1.controller;import com.njbdqn.myspb1.entity.Bank;
import com.njbdqn.myspb1.services.BankService;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.util.List;/** 告诉spring 本类下所有添加的RequestMapping的方法都是Servlet* 并且所有的方法返回值自动转为JSON* */
@RestController
public class BankCtrl {/*** 按类型进行注入*/@Resourceprivate BankService bankService;/*** 给你的servlet起个名字* @return*/@RequestMapping("/all")public List<Bank> find() {return bankService.fall();}@RequestMapping("/save")public String save(@RequestBody Bank bank) {bankService.save(bank);return "ok";}@RequestMapping("/del")public String del(int uid) {bankService.del(uid);return "ok";}@RequestMapping("/update")public String up(@RequestBody Bank bank) {bankService.update(bank);return "ok";}
}
在首页
效果 单击衣服
产生文件