首页 > 编程语言 >JavaWeb和SSM

JavaWeb和SSM

时间:2024-12-23 10:24:52浏览次数:5  
标签:JavaWeb 映射 SSM 响应 Session 使用 对应 客户端

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);

标签:JavaWeb,映射,SSM,响应,Session,使用,对应,客户端
From: https://www.cnblogs.com/exo123/p/18611119

相关文章

  • ssm毕设团队管理系统程序+论文
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今竞争激烈的商业环境中,企业的成功越来越依赖于高效的团队协作与管理。随着市场的不断发展和业务的日益复杂,传统的团队管理方式已难以满足企......
  • ssm毕设小区停车场信息系统程序+论文
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着经济的发展和居民生活水平的提高,汽车保有量在小区内不断增加。然而,传统的小区停车场管理大多还处于较为落后的手工处理阶段或简单的半自动管......
  • ssm毕设校园疫情防控平台程序+论文
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着全球疫情的爆发,校园疫情防控成为了保障师生健康和维持正常教学秩序的关键任务。传统的疫情防控手段多依赖人工操作,例如人工收集学生健康信息......
  • ssm毕设网上奶茶购买平台程序+论文
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着互联网技术的飞速发展,电子商务已经深度融入人们的日常生活。如今,消费者越来越倾向于通过网络平台购买各类商品和服务,这种购物方式突破了传统......
  • ssm毕设鲜花销售系统程序+论文
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着人们生活水平的不断提升以及对生活品质追求的日益增长,鲜花在日常生活中的角色愈发重要。它不仅是美化环境的得力助手,更是情感表达的重要媒介......
  • ssm毕设武器爱好者管理平台程序+论文
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着武器文化的发展,越来越多的人对武器产生浓厚兴趣,成为武器爱好者。然而,目前缺乏一个专门针对武器爱好者的管理平台。在传统环境下,武器爱好者们......
  • ssm毕设图书馆书籍管理系统程序+论文
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今数字化时代,图书馆的管理面临着诸多挑战与变革需求。随着信息技术的飞速发展,人们获取知识的途径日益多样化,传统的图书馆书籍管理方式已难以......
  • JavaWeb案例整体分析---》差旅费报销管理信息系统->>出差申请与报销部分
    mapper点击查看代码packagecom.Moonbeams.mapper;importcom.Moonbeams.pojo.BusinessApply;importcom.Moonbeams.pojo.DepartmentExpense;importcom.Moonbeams.pojo.Reimburse;importorg.apache.ibatis.annotations.Insert;importorg.apache.ibatis.annotations.Pa......
  • JavaWeb案例整体分析---》差旅费报销管理信息系统->>登录与注册
    Mapper与mapper.xmlpackagecom.Moonbeams.mapper;importcom.Moonbeams.pojo.Reimburse;importcom.Moonbeams.pojo.User;importorg.apache.ibatis.annotations.Insert;importorg.apache.ibatis.annotations.Param;importorg.apache.ibatis.annotations.ResultMap......
  • JavaWeb案例整体分析---》差旅费报销管理信息系统->>数据库操作和Mybatis配置
    数据库操作CREATETABLEter_businessapply(idVARCHAR(8)PRIMARYKEY,nameVARCHAR(50)NOTNULL, positionVARCHAR(50)NOTNULL,departmentVARCHAR(50)NOTNULL,destinationVARCHAR(100)NOTNULL,departure_datevarchar(30)NOTNULL,......