JavaWeb和SSM

news/2024/12/23 10:13:09/文章来源:https://www.cnblogs.com/exo123/p/18611119

JavaWeb

简单的登录和注册项目(日程管理第二期)

1、dao中定义的接口,提供操作名的标准,只看接口定义了哪些方法,这样和服务层的service的耦合度低。

 

2、mysql中如果返回的是count()的结果,则类型默认为long

 

MVC

Session和Cookie

1、cookie是session的ID

 

2、设置了时效性的Cookie叫做持久化Cookie

 

3、账号、密码权限等比较敏感的信息使用Session存储,视频播放进度等信息只是用Cookie就可以。

 

4、一个用户访问服务器有一个Session,但同一个用户不同浏览器会产生不同的Session对象。

  Session对象默认时限为30分钟,如果在中间使用了该Session,则会从此刻开始可以再活30分钟

 

5、tomcat中的config文件夹下有一个web.xml,工程中也有一个web.xml,config文件夹下的web.xml为默认的配置,当两个有相斥时,会用工程下的web.xml中的配置。

 

6、关闭浏览器再打开,session会话域如果没到时间不会消除

 

域对象

1、HttpSession可以跨多个请求,请求之间不需要有请求转发也可传递数据,但不同客户端之间拿不到

 

2、Cookie是在客户端保存数据的技术,Session是在服务器端保存数据的技术。

 

3、servletContext 应用域在工程启动时就会创建对象,HttpSession需要在servlet中调req.getSeesion时才会产生,HttpServletRequest在客户端请求时会产生。

  

过滤器

1、在请求到目标资源、目标资源响应到客户端之间都会经过过滤器,但是请求时,过滤器可以控制能不能继续往后走,响应时控制不了,只能对响应的内容进行设置。

 

2、filter顺序通过配置文件中的<filter-mapping>的顺序决定,谁在前面,先经过谁

  如果使用注解方式,通过在同一个包下的类名字典顺序,来确定执行顺序。

 

监听器

监听器用来监听域对象的状态,常用来监听ServletContext,ServletContextListener用来监听应用域的初始化和销毁状态,ServletContextAttributeListener用来查看应用域属性的更改。

 

Ajax

1、同步交互:客户端操作和服务器是交替的,客户端向服务器发出申请,必须要服务器响应之后客户端才会进行下一步操作,使用a、form标签

   异步交互:使用js代码发送请求,服务端开始处理请求,而客户端继续进行下一步操作,不需要等到服务端响应,根据服务端响应的内容进行判断,是否将内容返回到客户端,也可以使用XmlHttpRequest对象。

 

2、在响应体中放入信息:resp.getWriter().write("hello:"+username),其中resp.getWriter()是一个打印输出流

响应体中的Json

1、响应行中的状态码只有为200时,对应响应体中才会有code,其中值为1代表成功,2代表失败,因为响应成功!=业务成功

 

2、data用来装本次响应的数据,message对code进行补充说明。

 

3、流程规范

后端使用Result对象表示响应的结果,Result中code和message的对应关系需要用到枚举类进行构建,将后端的结果转换成JSON串响应给客户端,然后使用JSON.parse(JSON串)将串转成前端对象,通过码获得执行业务的结果。

为什么要这样?因为响应的结果中code和message是人为定义的,如果放在前端实现代码不够简洁,而后端使用枚举类型去定义的话更加简洁明了。

Maven

1、gav是创建时项目以及包的名字要求,p指packing即打包项目的类型,如果是pom表示为父工程,聚合用

 

2、pom.xml里依赖有个属性<scope>用来指定该依赖作用的范围,默认compile是包括main和test;runtime表示main不会,test不会只有打包和运行时使用(mysql  需要反射时注入驱动),provided main和test会用,打包和运行不用(servlet 因为tomcat也提供了servlet)

 

3、依赖冲突解决原则:引用路径长度谁短谁优先;当路径长度相等时,先声明的优先。

 当产生依赖冲突之后,后面的依赖传递全部终止,报错之后手动添加

 

4、构建命令周期:触发周期后的命令会自动触发同一周期前的命令!

   清理:clean ; 构建:compile test package install/deploy;报告: site

   使用可视化图的插件执行命令时,要手动按照顺序执行前面需要的执行的命令,并没有命令周期

 

SSM

MyBatis->Jdbc;SpringMVC->servlet;Maven:管理项目的依赖和构建管理的软件

Mybatis

1、使用代理模式创建接口的对象 例: UserMapper mapper=sqlSession.getMapper(UserMapper.class);

   mapper接口中的代理实现类实现接口中的抽象方法,底层使用的sqlSession.insert方法:

方法中字符串定位到UserMapper接口中的insertUser方法作为UserMapper.xml配置文件中insertUser中sql语句的唯一标识。

 

2、一个表对应一个实体类,对应一个mapper接口对应一个映射文件

模糊查询及获取参数方式的使用情况

1、Mybatis中获取参数的两种方式:${}的本质就是字符串拼接,#{}的本质就是占位符赋值,占位符赋值会默认加上单引号

只能使用${}的情况:

  1. where  字段 in(范围)
  2. 动态设置表名时

模糊查询中占位符赋值被单引号涵盖,将会直接作为字符串的一部分不会再作为占位符。除非使用"%"#{}"%"

 

2、类中的属性和成员变量无关,看类中的get和set方法。

 

3、可以给Integer赋值为null,但int型不可以赋值为null

 

4、使用map集合接收数据,当查询得到的某个字段为null,则在此map中没有赋值;但如果是实体类,此属性会显示赋值为null

获取自增的主键

处理字段名和属性名不一致的情况

1、Mapper接口中方法的形参名并不重要,但@para("")里面的名字必须要和映射文件里获取参数里的名字相同,和实体类型的属性名相对应,sql语句中的字段名必须和表里的字段名匹配。

实体类中的定义:

接口方法的定义;

mapper映射文件中sql语句:

 

2、使用全局变量方式处理字段名和属性名不一致的情况时,mapper映射文件中直接写resultType即可,不用映射

 

3、多对一的分步查询步骤(可以延迟加载,前提要按需加载):

    • 先对”多“表创建方法,为查询的第一步  
      Emp getEmpAndDeptByStepOne(@Param("empId") Integer id);
    • 在”多“表对应的映射文件中写对应的sql语句,并将返回值类型映射成实体类对象
      <select id="getEmpAndDeptByStepOne" resultMap="empDeptStepMap">select * from t_emp where emp_id=#{empId}
      </select>
    • 在”一“表中创建查询的第二步方法,并在对应表中写出对应的sql语句
      Dept getEmpAndDeptByStepTwo(@Param("deptId") Integer deptId);
      <select id="getEmpAndDeptByStepTwo" resultType="Dept">select * from t_dept where dept_id=#{deptId};
      </select>
    • 在多表对应的映射文件中详细设置empDeptStepMap
      <resultMap id="empDeptStepMap" type="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result><result column="email" property="email"></result><association property="dept"select="com.atguigu.mybatis.mapper.DeptMapper.getEmpAndDeptByStepTwo"column="dept_id"></association>
      </resultMap>

       

4、一对多的分布查询

<resultMap id="deptAndEmpResultMap" type="Dept"><id column="dept_id" property="deptId"></id><result column="dept_name" property="deptName"></result><collection property="emps"select="com.atguigu.mybatis.mapper.EmpMapper.getDeptAndEmpByStepTwo"column="dept_id"></collection></resultMap>

collection中的属性可以理解为,将对应sql执行语句的结果中属性为dept_id的值拿出来,作为第二步的参数,最后将第二步返回的值给emps。

其它步骤思路和上面一样,有两个地方需要改为集合:”一“表中对”多“表的定义、”多“表方法中接收的结果:

List<Emp> getDeptAndEmpByStepTwo(@Param("deptId") Integer deptId);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/857344.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt编写机器码秘钥控制/日期防篡改/离线使用/硬件标识/运行时间/数量控制/批量更新秘钥

一、前言说明 搞软件开发一直追求精益求精的目标,从第一版的秘钥生成器到今天这个版本,经历了十年的时间,最初的版本做的非常简陋,就是搞了个异或加密,控制运行时间,后面又增加设备数量的控制,然后就是到期时间的限制。这种有个巨大缺陷就是可复制性,如果将授权的秘钥文…

反馈处理慢如蜗牛?优化流程的方法看这里

在电商领域,客户反馈的及时处理直接影响着复购率和品牌声誉。然而,很多团队都面临着反馈跟进流程混乱的问题:反馈记录杂乱无章,处理状态不透明,甚至责任人不明确。这种混乱不仅拖慢了问题解决的速度,还严重影响了客户的信任感。 如何打破这一局面?答案就在于团队文档管理…

【随手记录】Apache POI 报错:Zip bomb detected! The file would exceed the max. ratio of compressed file ....

1、背景:使用POI解析Excel报错:Zip bomb detected! The file would exceed the max. ratio of compressed file size to the size of the expanded data。This may indicate that the file is used to inflate memory usage and this could pose a security risk.You can adj…

服务器overleaf

1.领取免费服务器,推荐免费服务器(SanFengYun)见下图。2.安装宝塔面板,配置内网为127.0.0.1,访问外网地址。 3.可以在宝塔面板一键部署网站,输入自己的域名即可。 4.关键:安装docker,安装yum,设置github可以访问。 5.更换docker镜像,自带镜像无法访问 6.按照overleaf…

10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南

在Python开发过程中,调试是一项核心技能。无论是初级开发者还是资深工程师,掌握高效的调试技巧都能显著提升开发效率。本文将介绍10个实用的调试方法,帮助开发者更有效地定位和解决问题。 https://avoid.overfit.cn/post/dfc2c72df2164c7ebac1289e17ec743e

专业的内外网数据交换方案 可解决安全、效率、便捷3大问题!

内外网数据交换是很多企业和行业都会面临的场景,既然隔离了内外网,重中之重就是要确保数据的安全性,其次在数据流转交换过程中,不能太繁琐复杂,需要让用户快速、便捷的进行数据交换。首先我们来看看,在进行内外网数据交换时,对于安全、效率、便捷这些方面的需求和挑战有…

Ftrans文件摆渡系统 让跨网文件传输更快捷、更安全!

很多含有敏感信息的行业,包括但不限于:集成电路、政府、金融、能源、医疗、制造以及一些高新技术企业,都会采用网络隔离的方式来保护核心数据,这就产生了跨网文件传输的业务场景。面临这种场景,最好是采用专业的文件摆渡系统来解决传输和管控问题。 一、跨网文件传输的业…

【差分约束】学习笔记

LearningBasic Tips 差分约束,即为存在一个差分约束系统,即类似 \(x_i - x_j \leq k\) 的 \(n\) 元一次不等式组,求出一组解使得该组内所有不等式全部成立,即 \(x_1 = s_1,x_2 = s_2 \dots x_n = s_n\),否则判无解。 对于满足条件的一个解集 \(\{s_1,s_2,s_3,\dots,s_n\}\…

AI车牌监测识别摄像机

AI车牌监测识别摄像机是一种基于人工智能技术的高级监控设备,用于识别和记录车辆的车牌信息。该摄像机利用深度学习算法和图像识别技术,能够快速准确地捕捉车辆牌照信息,有助于提高交通安全管理和追踪犯罪嫌疑车辆。AI车牌监测识别摄像机是一种基于人工智能技术的高级监控设…

dedecms报错The each() function is deprecated

打开报错提示文件对应的行数 把 while (list($key) = each($val)) 改成foreach ($val as $key => $value)扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版、BUG修…

dedecms文章简介标签infolen控制字数的方法

方法一:底层标签 [field:description/] 改成 [field:infos/] 方法二: [field:description function=cn_substr(@me,66)/]扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网…