ssm前后台交互流程

博客介绍了网页访问的流程,先访问ShowController的index方法,再进入Service层执行uerService的findById()方法,该方法在dao层具体实现为selectByPrimarykey(),生成sql语句执行查询,最后将结果放于model返回前台界面。

在这里插入图片描述

网页访问类中方法: 访问ShowController中 index方法
在这里插入图片描述
然后进入Service层执行uerService中的 findById()方法。

public class UserServiceImpl implements UserService {

    @Autowired
    private blogMapper blogMapper;
    public blog findById(){
        blog o  = blogMapper.selectByPrimaryKey();
        return o;
    }
}

方法具体实现selectByPrimarykey();是在dao层
在dao层会生成sql语句

 select 
    <include refid="Base_Column_List" />
    ,
    <include refid="Blob_Column_List" />
    from blogcontent
  </select>

然后执行查询。
查询完成后执行model.addAttribute("blog",blogs);将结果放在model中。然后return "user/indexs";返回给前台界面。

<think>嗯,用户想了解SSM框架中前后端交互的实现方法,需要示例教程。首先,我得回忆一下SSM框架的各个部分,Spring、Spring MVC和MyBatis各自的作用。Spring MVC负责控制层,处理前端请求,MyBatis处理数据库操作,Spring负责整合和管理Bean。 用户可能需要具体的步骤,比如如何从Controller接收参数,返回数据,以及前后端数据交互的格式。常见的应该是JSON格式,所以需要用到@ResponseBody或者@RestController注解。还要考虑如何通过Ajax发送请求到后端,比如使用jQuery或者Fetch API。 然后,需要检查用户提供的引用内容,看看有没有相关的代码片段可以参考。引用1到4提到了一些Controller的方法,参数绑定,比如@PathVariable和@RequestParam,还有Service层和Mapper层的注入。比如引用4中的MessageServiceImpl使用了@Autowired注入Mapper,Controller层处理请求。 可能需要分步骤讲解,从请求映射、参数接收、业务处理到返回响应。例如,前端通过表单提交或者Ajax发送数据,后端用@PostMapping处理,参数可以用对象接收或者单独参数,然后调用Service层处理,最后返回视图或JSON。 还要注意SSM的配置,比如DispatcherServlet的配置,视图解析器,以及MyBatis的Mapper扫描。但用户可能更关注代码示例,比如Controller的编写,如何接收GET和POST请求,返回JSON数据。 另外,用户可能需要前后端交互的具体示例,比如查询数据、提交表单。可以举一个简单的例子,比如用户查询消息列表,前端发送GET请求,后端返回JSON,前端用Ajax处理显示。或者添加数据,前端POST JSON,后端用@RequestBody接收。 还要考虑参数绑定的方式,比如路径变量、请求参数、表单数据和JSON数据的不同处理方式。例如,@PathVariable用于RESTful风格的URL,@RequestParam用于查询参数,@RequestBody处理JSON。 可能需要提到Spring MVC的注解,如@RequestMapping、@GetMapping、@PostMapping,以及如何返回ModelAndView或者直接返回对象加上@ResponseBody。 最后,确保代码示例正确,比如Controller中的方法,Service调用Mapper,返回数据。同时,引用提供的代码片段,比如引用3中的@RequestMapping和参数绑定,引用4中的Service实现。</think>### Java SSM框架前后端交互实现方法 在SSM(Spring+Spring MVC+MyBatis)框架中,前后端交互主要通过 **Controller层接收请求、Service层处理业务、Mapper层操作数据库** 实现。以下是具体实现步骤和示例: --- #### 一、基础配置(关键注解与组件) 1. **Controller层**:使用`@Controller`或`@RestController`注解定义控制器类,通过`@RequestMapping`映射请求路径。 2. **参数绑定**: - `@RequestParam`:接收URL参数或表单数据 - `@PathVariable`:接收RESTful风格的路径参数 - `@RequestBody`:接收JSON格式的请求体(需配合`HttpMessageConverter`) 3. **返回数据**: - 返回视图:直接返回字符串(如`return "index";`) - 返回JSON:使用`@ResponseBody`或直接使用`@RestController` --- #### 二、实现示例:查询与新增操作 ##### 1. 查询数据(GET请求) ```java // Controller层 @RestController @RequestMapping("/message") public class MessageController { @Autowired private MessageService messageService; // 查询所有消息 @GetMapping("/list") public List<Message> getMessageList() { return messageService.selectMess(); } } ``` ```java // Service层(引用4) @Service public class MessageServiceImpl implements MessageService { @Autowired private MessageMapper mapper; @Override public List<Message> selectMess() { return mapper.selectMess(); } } ``` **前端调用**(使用jQuery): ```javascript $.ajax({ url: "/message/list", type: "GET", success: function(data) { console.log("查询结果:", data); } }); ``` --- ##### 2. 新增数据(POST请求) ```java // Controller层(引用3) @PostMapping("/addSave") public ResponseEntity<String> addMessage(@RequestBody Message message, HttpSession session) { int result = messageService.insertMessage(message); return result > 0 ? ResponseEntity.ok("添加成功") : ResponseEntity.badRequest("添加失败"); } ``` ```java // Service层(引用4) @Override public int insertMessage(Message message) { return mapper.insertMessage(message); } ``` **前端调用**(JSON格式): ```javascript $.ajax({ url: "/message/addSave", type: "POST", contentType: "application/json", data: JSON.stringify({ "title": "Hello", "content": "SSM示例" }), success: function(response) { alert(response); } }); ``` --- #### 三、参数绑定方式对比 | 场景 | 后端注解 | 示例 | |--------------------|---------------|-------------------------------| | URL参数 | @RequestParam | `/detail?id=1` → `@RequestParam int id` | | RESTful路径参数 | @PathVariable | `/user/{id}` → `@PathVariable int id` | | 表单提交 | 省略注解 | `public String save(User user)` | | JSON请求体 | @RequestBody | `@RequestBody Message message` | --- #### 四、关键配置 1. **Spring MVC配置**: ```xml <!-- 启用注解驱动和JSON支持 --> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> </mvc:message-converters> </mvc:annotation-driven> ``` 2. **MyBatis扫描**: ```xml <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper"/> </bean> ``` --- #### 五、常见问题 1. **中文乱码**:在`web.xml`中添加字符编码过滤器: ```xml <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> ``` 2. **跨域问题**:使用`@CrossOrigin`注解或配置全局CORS规则[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值