SSM实战
创始人
2025-05-28 10:38:32
0

一.SSM实战

1.项目简述

2.项目结构

3.项目编写思路

4.项目实战代码

5.项目遗留问题:前端数据以什么格式传送后端,后端如何进行封装?

6.Restful风格

7.ajax请求

8.html网页中的路径问题

未更新

一.SSM实战

1.项目简述

  • 数据库:id password name
  • 登录验证成功后进入name的主页

2.项目结构

文档结构

在这里插入图片描述

①数据库

在这里插入图片描述

②登录页面

在这里插入图片描述

③登录成功页面

在这里插入图片描述

④登录失败页面

在这里插入图片描述

3.项目编写思路

①编写tomcat依赖的启动web.xml

  • 注册DispacherServlet,映射到/

②编写springmvc的配置文件

  • 编写三大组件
    handlermapping,handlerAdapter(驱动注解+扫描controller包)
    视图解析器(thymeleaf解析器)

③整合mybatis

  • userDao接口对应唯一的mapper.xml
  • 在springmvc配置文件中注册
    数据库连接池(利用jdbc.properties)
    配置SqlSessionFactory对象(用数据库连接池初始化)
    配置MapperScannerConfigurer(用sqlsessFactory初始化)(注册mapper接口的动态代理为bean)

4.项目实战代码

①引入依赖

  • 注意版本问题
4.0.0com.likejinmyweb1.0-SNAPSHOTwarmyweb Maven Webapphttp://www.example.comsrc/main/java**/*.*src/main/resources**/*.*5.1.6.RELEASEmysqlmysql-connector-java5.1.32org.springframeworkspring-tx${spring-version}org.springframeworkspring-context${spring-version}org.springframeworkspring-beans${spring-version}org.springframeworkspring-jdbc${spring-version}org.springframeworkspring-webmvc${spring-version}org.springframeworkspring-core${spring-version}org.springframeworkspring-jdbc${spring-version}com.baomidoumybatis-plus2.3com.mchangec3p00.9.5.2log4jlog4j1.2.12jstljstl1.2taglibsstandard1.1.2org.thymeleafthymeleaf-spring53.0.12.RELEASEorg.thymeleafthymeleaf3.0.12.RELEASE

②编写web.xml和springmvc.xml和jdbc.properties

  • web.xml
Archetype Created Web ApplicationcharacterEncodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingutf-8forceRequestEncodingtrueforceResponseEncodingtruecharacterEncodingFilter/*DispatcherServletorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:springmvc.xml1DispatcherServlet/
  • spingmvc.xml


  • jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:13306/mytest?useUnicode=true&characterEncoding=utf8&useSSL=false
jdbc.username=root
jdbc.password=abc123

③编写pojo

  • 即一个类对象对应一个数据库中的一行
package com.likejin.myweb.pojo;public class User {private Integer uid;private Integer password;private String uname;@Overridepublic String toString() {return "User{" +"uid=" + uid +", password=" + password +", uname=" + uname +'}';}public User(Integer uid, Integer password, String uname) {this.uid = uid;this.password = password;this.uname = uname;}public User() {}public Integer getUid() {return uid;}public User(Integer uid, Integer password) {this.uid = uid;this.password = password;}public void setUid(Integer uid) {this.uid = uid;}public Integer getPassword() {return password;}public void setPassword(Integer password) {this.password = password;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}
}

④编写dao接口以及mapper映射文件

  • dao接口
package com.likejin.myweb.dao;import com.likejin.myweb.pojo.User;
import org.springframework.stereotype.Component;public interface UserDao {User selectone(User user);
}
  • mapper映射文件(放在同名同包下)




⑤编写service层

  • UserService接口和实现类
package com.likejin.myweb.service;import com.likejin.myweb.pojo.User;
import org.springframework.stereotype.Service;public interface UserService {User getUser(User user);
}
package com.likejin.myweb.service.impl;import com.likejin.myweb.dao.UserDao;
import com.likejin.myweb.pojo.User;
import com.likejin.myweb.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl implements UserService {@AutowiredUserDao userDao;@Overridepublic User getUser(User user) {User selectone = userDao.selectone(user);return selectone;}
}

⑥controller

  • controller
package com.likejin.myweb.controller;import com.likejin.myweb.pojo.User;
import com.likejin.myweb.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;@Controller
@RequestMapping(value="/login")
public class LoginController {@AutowiredUserService userService;@RequestMapping(value="/check")public String checkLogin( User user,Model model){User user1 = userService.getUser(user);if(user1==null){return "error";}else{model.addAttribute("name",user1.getUname());return "success";}}
}

⑦编写index.jsp和success.html和error.html

  • index.jsp


Hello World!

<%@ page pageEncoding="UTF-8"%>

用户登录


  • success.html


Title


你好

asa

  • error.html


Title


点击此处重新登录


5.项目遗留问题1:前端数据以什么格式传送后端,后端如何进行封装?

  • 问题引入:在public String checkLogin( User user,Model model)的形参上加上RequestBody封装为user,报错为415

①前端传什么数据?

  • 表格形数据(get拼接在地址,post放在请求体中)
    key1=value1&key2=value2
    此数据在表单提交post时或者get方法主动添加形参时
  • json数据
    数据存在请求实体中
    {“键” : 值, “键” : “值”,…}

②后端如何识别?

  • 表格形数据
    看成字符串(对应名字赋值)
    看成对象(对应属性赋值)
  • json数据
    后端使用@RequestBody来表明从请求实体中取数据
    封装为pojo(对应对象的属性)
    封装为列表([])
    封装为Map(键值对)

③springmvc中处理参数的注解

  • @PathVariable
    获得路径上的值
    例如:
//访问资源地址为/user/my/133
@GetMapping("/user/{username}/{password}")public String getUserInfo(@PathVariable("username") String username,@PathVariable("password") String password)
  • @RequestParam
    获取get请求在路径中的参数值
    例如:
///user?username=123&password=123
@GetMapping("/user")public String getUserInfo(@RequestParam("username") String username,@RequestParam("password") String password)
  • @RequestBody
    参数在请求体中格式为json字符串
  • 不带任何注解的表单传参
    直接可以封装为对象
  • @RequestBody和不带注解的对比
    都在请求体中
    @RequestBody为json数据,不带注解的只是key=value

6.Restful风格

①什么是Restful风格

  • 方法不使用键值对来携带参数,而是直接作为URL的一部分
  • 使用 get post put delete来进行操作
  • 即restful是面向资源的,一个资源有多种操作,以往来说在路径上加上动词,而现在不需要加动词,而是加入一个type即可表明在资源上的什么操作

②具体使用

  • 配置过滤器(HiddenHttpMethodFilter转换请求方式)
  • 请求方式为post,设置隐藏参数_method

③项目中使用

  • 在web.xml中配置处理请求方式过滤器
HiddenHttpMethodFilterorg.springframework.web.filter.HiddenHttpMethodFilterHiddenHttpMethodFilter/*
  • 增加网页的请求为restful格式




我是html页面

dianwoceshi
  • controller处理请求
package com.likejin.myweb.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;@Controller
@RequestMapping(value="/data")
public class RestfulController {@RequestMapping(value = "/employees", method = RequestMethod.GET)public String get(){System.out.println("get");return "success";}@RequestMapping(value = "/employees", method = RequestMethod.POST)public String add() {System.out.println("post");return "success";}@RequestMapping(value = "/employees", method = RequestMethod.PUT)public String update() {System.out.println("put");return "success";}@RequestMapping(value = "/employees/{id}", method = RequestMethod.DELETE)@ResponseBodypublic String delete(@PathVariable Long id) {System.out.println("delete");return "success";}}

7.ajax请求

①ajax请求是什么?

  • 传统前后端交互:前端传送一个HTTP请求,后端响应数据后返回一个新页面
  • ajax请求:ajax异步请求数据,局部刷新不返回新页面(js)

②ajax请求的应用?

  • 见上述restful风格。

③ajax请求会引起跨域。

  • 跨域即为网页向客户端发送请求不在同一个位置(ip地址端口号)
  • ajax请求即会产生跨域

8.html网页中的路径问题(问题)

  • html网页中/代表localhost:8080
  • 而不写/并不是localhost:8080/项目名/,而会带上次请求的资源路径地址。
    例如:
    JSP:
    在这里插入图片描述
    跳转到
@Controller
@RequestMapping(value="/test")
public class AjaxRestController {@RequestMapping(value="/ajaxrest")public String test( Model model){return "testAjax";}
}

跳转到

此时表单提交的路径不是localhost:8080/web/data/employees
而是
localhost:8080/web/test/data/employees
如何解释?

  • 解释
    即html中相对路径不是当前项目下的路径,而是最后访问该资源的地址路径。
    上面html中的data/employees并不是localhost:8080/web/data/employees,而最后访问改地址的资源路径是localhost:8080/web/test,通过/ajaxrest访问到了html资源,故最后访问的路径为localhost:8080/web/test,故最终路径为localhost:8080/web/test/data/employees

未更新

未更新

未更新

未更新

未更新

未更新1

相关内容

热门资讯

喜迎八一建军节歌颂军人现代诗... 有了当兵的历史是光荣的、是值得的、是有意义的,也是难以忘怀的。“八一”将永远流淌在我们的血液里,军旗...
赞美母亲河的诗歌 赞美母亲河的诗歌  无论是身处学校还是步入社会,许多人都接触过一些比较经典的诗歌吧,诗歌饱含着作者的...
2021立冬诗歌朗诵小学四年... 立冬不仅是收获祭祀与丰年宴会隆重举行的时间,也是寒风乍起的季节。那么,关于立冬的诗歌你有知道多少呢?...
劝诫子女孝顺父母的古代诗歌 劝诫子女孝顺父母的古代诗歌  世界上最伟大最无私的爱当属来自父母的爱。如若此刻你身在异地,那么假期时...
赞美诗歌1218首全集(5)   第592首 不为明天忧虑  第593首 主我心依靠你  第594首 你所信的是谁  第595首 ...
赞颂祖国的诗歌 赞颂祖国的诗歌大全  在日复一日的学习、工作或生活中,大家一定都接触过一些使用较为普遍的诗歌吧,诗歌...
现代诗歌短诗 现代诗歌短诗  在日常学习、工作和生活中,大家都看到过许多经典的诗歌吧,诗歌语言凝练而形象性强,具有...
经典英语诗歌 经典英语诗歌  诗歌是语言凝练而形象性强,具有鲜明的节奏,和谐的音韵,富于音乐美,语句一般分行排列,...
表达父母之爱的诗歌 表达父母之爱的诗歌  父母恩胜万金,父母之爱无价。那么,下面是小编给大家整理收集的表达父母之爱的诗歌...
叙事诗 叙事诗  导语:叙事诗是诗歌体裁的一种。它用诗的形式刻画人物,通过写人叙事来抒发情感,而且情景交融,...
《温柔》诗歌 《温柔》诗歌  《温柔》  我很不幸  染上了治不好的温柔  你用思念的锦缎  轻印我潮湿脸颊  复...
2022年元宵节灯谜 2022年元宵节灯谜  2022年元宵节灯谜(精选210个)  中国的谜语源远流长,已经有三千多年的...
描写夏天的诗歌 描写夏天的诗歌15篇  在日常学习、工作或生活中,许多人对一些广为流传的诗歌都不陌生吧,诗歌是用高度...
赞美劳动者的现代诗歌   劳动是光荣的,是神圣的,是唯一能与收获对等的,以下是小编整理的相关赞美劳动者的现代诗歌,欢迎阅读...
感恩的诗歌 关于感恩的诗歌(精选10首)  在平平淡淡的学习、工作、生活中,大家都收藏过令自己印象深刻的诗歌吧,...
诗歌的艺术和审美观 诗歌的艺术和审美观  诗歌是艺术的一种表现形式。赏诗、作诗,反映着对诗歌这种艺术表现形式的“审美观”...
关于爱情的绝美诗歌大全5篇 诗歌,是一种抒情言志的文学体裁。是用高度凝练的语言,生动形象地表达作者丰富情感,集中反映社会生活并具...
《感恩母亲》诗歌 《感恩母亲》诗歌《感恩母亲》诗歌1  你苍白的指尖理着我的双鬓  我禁不住象儿时一样  紧紧拉住你的...
读书与知识的诗歌 关于读书与知识的诗歌  读书,可以增长我们的见识,帮助我们成长。以下是专门为你收集整理的关于读书与知...
适合清明节朗诵的诗歌 适合清明节朗诵的诗歌(通用26篇)  清明,农历二十四节气之一。每年4月5日前后太阳到达黄经15°时...