javaweb学习

📅 发布时间:2026/7/12 18:30:54 👁️ 浏览次数:
javaweb学习
前端html和css写入路径盒子模型wide height默认文本框大小flex和盒子同属css中的布局表单标签表格tabletheadtrthtrtheadtbodytrtdtrJavaScriptjs的对象定义json本质是一个字符串核心语法:dom对象将html文件封装为对象以便对js对html进行操作改变元素属性href文本传智教育dom操作事件监听语法常见事件js优化复用性维护性vue框架用于将数据转换为用户界面快速入门常用指令补充 1.key用来做唯一标识2.使用插值表达式调用数据渲染同时插值表达式无法运用与标签内部使用v-bind指令v-bindv-ifv-showv-modelv-on如ajax简化-axios(异步请求发出时候本身代码会继续进行无需等待回应)1.引入2.函数动态加载页面案例学习为了提升可维护性使用以下关键字如何载入页面时候自动查询-vue生命周期解决每一个生命周期事件会自动触发一个钩子生命周期方法后端maven项目管理有助于依赖下载同时保持项目结构一致依赖配置依赖继承-排除依赖maven生命周期三套独立的生命周期三套里重要的五个阶段单元测试-junit测试框架(可用ai生成)检查逻辑错误可用断言常用注解junit测试规范以及规定单元测试企业规范-覆盖率依赖范围web基础http协议请求体只有post有get无获取请求数据响应协议web开发案例小tips1.lambok依赖工具包2.项目开发中基本类型使用包装类int有默认值3.使用注解代替繁琐构造器声明4.读取文本文件并换为json格式使用hutool依赖5.优化路径使用绝对磁盘路径导致移入他人电脑时候不便相对路径可以吗以下通过获得字节码对象的类加载器来获得文件资源assteam意思是转换为流来获得6.在响应网页请求时候需要使用的两个注解7.返回值为json格式的原因三层架构同时做到分层解耦降低模块之间的依赖-ioc,diioc详解DI其中name为bean名通常首字母小写MySQL左外连接左表全部保留如果其中一元素在右表中没有匹配的保留过后右边补null面试题可能会问Mybatisjdbc的框架入门数据库链接池mabatis默认使用hikarimybatis增删改查使用1.sql配置2.#{}采用预编译形势加入参数而{}采用拼接形势加入参数3.当要加入的参数太多时候可以将所有参数封装为对象然后传入对象作为参数注意{}里要写对象里的属性名而不是数据库里的字段名4.5.遇到框架错误不要从上往下看找到cause by进行改进xml配置文件复杂的语句建议使用xml而不是注解简单的推荐使用注解1.在resources建包的时候没有package选项只能选dictory建包此时不能用.只能用/表示目录yml配置文件properties臃肿案例后端开发项目tails增删改查请求1.每一个项目建立好后检查一下jdk版本确认utf-8字符记得检查idea中数据库有无链接否则可能无法识别注解中的sql语句2.项目的基本结构复习三层架构3.前后端联调测试前端项目部署在nginx中后端在tomcat启动nginx后使用左下角的链接可以访问到指定的tomcat后端中间是nginx的配置文件决定了具体访问哪个后端链接4.在写删除部门时候涉及到了传参url形式5.在写插入语句时候涉及到后端如何读取前端给的json格式数据6.修改部门时候分两步查询回显和修改查询时候传入路径参数查询某个部门使用到路径参数7.日志代替控制台输出以此记录信息1.引入依赖springboot依赖传递已经映入2.xml配置3.sl4j4.使用大括号作为占位符来接收参数避免拼接麻烦5.日志级别推荐使用info或者debug以防控制台输出日志过多员工管理分页查询1.结果封装类里面的参数也需要遵照接口文档2.引号内不能使用#{}这会使其变成单纯的字符使用concat函数实现字符拼接解决3.在yml中写sql语句mybatis查询优化4.动态sqlmybatis提供解决查询时候部分参数可以不填5.使用pagehelper分页插件实现分页查询需要引入依赖新增员工1.员工经历中的外码员工id需要获取插入员工表里的员工id自增此时需要option注解下面这张图片将数据库生成的主键获取到emp类里的id属性中注意xml文件会覆盖注解如果你的sql语句是写在xml中的主键回填的配置也需要写在xml中不然会被覆盖此时可以遍历集合员工经历有多个每个经历作为一个对象放入集合中经历本身也是类将emp中的id赋值给员工经历表中的empid如下图2.通过动态sql保证员工经历可以插入一个也可以插入多个补充动态sql完整模板事务管理3.spring事务管理在方法接口等上方加入transactional注解将会把该方法当成一整个事务4.进阶如不加rollbackfor将只处理运行异常事务的传播propagation主要关注前两个5.面试题事务的四大特性文件上传1.前端文件上传三要素method必须为post文件较大编码格式enctype必须是m....不是的话无法上传文件内容将会上传一个文件名表单内有个input标签的type为file2.后端代码接收文件的属性类型为multipatfile同时获取原文件名保证最后的拓展格式不变阿里云1.准备工作注意bucket的访问权限要改为允许公共访问同时读写权限改为公共读2.引入依赖一定要看官方文档3.基于阿里云的后端代码示例4.程序优化原因将经常变动的配置信息写在代码里不方便维护解决写入apllication.yml对配置的使用方法2复用性更强1.2.将一个个属性写入类当中采用类提供的get方法调用属性注意要加上component保证注入到ioc容器中删除员工批量删除(删除单个可以当作批量中的1个处理所以写一个接口就好了)当使用集合接受参数时requestparam不可省略可以删除1个或者多个-采用动态sql修改员工查询回显问题使用resulttype时候出现两条结果外连接后经历有两个但返回时候只有一个emp对象所以需要更改为resulttype保证能将经历封装到emp类中的emper集合中使属性能一一对应具体实现优化保证可以只改其中的部分属性名全局异常处理器作用保证异常能以json格式返回到前端需要新定义一个异常类用到以下两个注解更进一步提示错误信息两个方法中遇到异常会先提示更细的员工信息统计1.接口文档显示需要返回两个集合故先定义新类包含两集合第一个是柱状图第二个饼图注意每个图需要返回的格式不一样请查看apache echarts2.利用case将数据库中的123转义为具体职位(语法也可以是case job when 1这样但是下面普适性更好)3.mapper接口老套路就是定义一个类包含pos和num但属性太少没必要所以就采用了listmap的形式来接收每个map有两个key为pos和num对应两个value而所有的map构成了集合list一行可看作一个map的value下图的表整体为一个list这个报错不用管是mybatis的误报可以这么解决4.service层实现两个集合分别封装流遍历集合班级管理1.在xml中和容易和标签混淆所以使用lt; gt代替2.在xml中可以使用now获取现在的时间不必像上图一样3.后端一方面和前端要联通另一方面要和数据库联通所以类中的属性名需要严格按照接口文档和前端要求的json格式保持一致与此同时数据库里的名字也需要和属性一致例如前端要求返回deptname 数据库中的形势为name则sql语句应当为select name as deptName(命名以保证名字一致使mybatis正确映射name到 deptname)4.在班级人数统计时候mapper接口用到了map遇到问题sql无法正确将属性映射为map里的value或者是key需要在使用sql语句时候为属性值起个value和key的别名5.requestbody 是给请求体传参用的不是利用对象传参就需要requestbody登录认证会话技术会话跟踪cookiesession和jwt主要理论:将json格式数据进行base64编码生成jwt编程实现可借助工具类完成1.引入依赖2.配置jwt信息对上图逐步解析帮助记忆builder创建一个 JWT 构建器对象用于逐步构建 JWT token。signwith算法密钥经过base64编码后的字符串claims自定义数据expiration有效的截止期限解析1.getbody获取数据部分本质是获取到一个map集合filter使用filter1.定义filter2.配置filter另当我们在Filter类上面加了WebFilter注解之后接下来我们还需要在启动类上面加上一个注解ServletComponentScan通过这个ServletComponentScan注解来开启SpringBoot项目对于Servlet组件的支持。路径含义拦截具体路径/login只有访问 /login 路径时才会被拦截目录拦截/emps/*访问/emps下的所有资源都会被拦截拦截所有/*访问所有资源都会被拦截intercepter1.定义拦截器2.注册拦截器在configure包中定义一个配置类注也可以设置不拦截的路径路径具体含义拦截路径含义举例/*一级路径能匹配/depts/emps/login不能匹配 /depts/1/**任意级路径能匹配/depts/depts/1/depts/1/2/depts/*/depts下的一级路径能匹配/depts/1不能匹配/depts/1/2/depts/depts/**/depts下的任意级路径能匹配/depts/depts/1/depts/1/2不能匹配/emps/1AOPAOPAspect Oriented Programming面向切面编程、面向方面编程其实说白了面向切面编程就是面向特定方法编程。AOP是一种思想而在Spring框架中对这种思想进行了实现那我们要学习的就是Spring AOP。我们只需要单独定义下面这一小段代码即可不需要修改原始的任何业务方法即可记录每一个业务方法的执行耗时。通知顺序第二种切入点表达式annotation定义注解注target指要在哪里生效-method-在方法上使用runtime指要在什么时候生效-在运行的时候生效分模块设计-继承聚合注不支持多重继承但所有子都要继承spring-boot-starter-parent所以要让父继承spring-boot-starter-parent聚合私服自制依赖的下载前端工程化vue工程化nodejs和npm统一的开发环境创建初始使用npm创建项目后入口文件为main.jsmain.js引用了app.vue这个跟组件Elementplus前端现成组件可用来复制Vue RouterVue中的路由主要定义的是路径与组件之间的对应关系。比如我们打开一个网站点击左侧菜单地址栏的地址发生变化。 地址栏地址一旦发生变化在主区域显示对应的页面组件。router由三个部分组成实例定义路径和组件之间的关系将路径连接关系到具体的组件router-link确定路径router-viewmain原本里面是写死的加了view后变成根据路径展示不同组件嵌套路由保证除了登录以外其他都能嵌套到layout中访问流程