ssm数据传输model、、request

本文展示了一个使用Spring MVC框架实现的简单用户列表功能。通过@Controller注解定义控制器类,并利用@RequestMapping映射GET请求来获取用户列表数据。两种不同的方法分别展示了如何通过Model和HttpServletRequest传递数据到前端。
   @RequestMapping(value="/list",method=RequestMethod.GET)
    public String list(Model model) {          //前台输出必须使用形如${ul.value.属性名 }的形式
        model.addAttribute("userList",userList);    //这个是将userList的值给到页面上去
        return "user/userList";            //  返回这个路径  
    }


      

     //这个方法也是Controller里的一种是用Servlet去实现的,目的是和model一样的
    @RequestMapping(value="/userlist",method=RequestMethod.GET)
    public String list(HttpServletRequest request) {      //前台输出必须使用形如${user.id }的形式
        List<User> userList = new ArrayList<User>();       
        userList.add(new User("1","yonghu1","121","1@qq.com"));        //给userList里添加属性
        userList.add(new User("2","yonghu2","122","2@qq.com"));        
        userList.add(new User("3","yonghu3","123","3@qq.com"));
        request.setAttribute("userList", userList);                
        return "user/userList";
    }

 

### 数据流向流程概述 在SSM框架中,数据流向主要涉及前端请求、Spring MVC控制器、业务逻辑处理、数据库交互以及响应返回等关键环节。以下是对整个数据流向的详细说明: 1. **前端请求**:用户通过浏览器发送请求,通常使用AJAX方式与后端进行交互。请求的数据通常以JSON格式传输,确保前后端能够高效解析。 2. **请求拦截与处理**:Spring MVC的`DispatcherServlet`作为前端控制器,负责拦截所有请求并将其分发给相应的处理器。处理器映射器根据URL找到具体的控制器方法,并生成处理器对象及拦截器返回给前端控制器。处理器适配器调用并执行控制器方法,处理持久化对象的增删改查操作。 3. **业务逻辑处理**:控制器方法接收请求参数,并调用服务层进行业务处理。服务层通常使用MyBatis操作数据库,完成数据的查询或更新。数据处理完成后,服务层将结果返回给控制器。 4. **数据库交互**:MyBatis负责与数据库进行交互,将操作映射到数据库。ORM框架将操作映射到数据库,并将结果返回给持久化对象。 5. **响应返回**:控制器将处理结果通过`@ResponseBody`注解直接写入HTTP响应体中,通常以JSON格式返回给前端,前端再根据返回的数据进行页面渲染或其他逻辑处理。 6. **视图解析与渲染**:如果请求需要页面跳转,控制器返回的视图名称会通过视图解析器解析,生成相应的视图对象。视图解析器将模型数据与视图结合,进行页面渲染并返回给客户端浏览器显示。 ### 数据流向流程图 以下是SSM框架中数据流向的流程图,展示了从用户请求到最终响应的整个过程: ```plaintext 用户请求 ↓ DispatcherServlet (前端控制器) ↓ HandlerMapping (处理器映射) ↓ Controller (后端控制器) ↓ Service (业务逻辑处理) ↓ MyBatis (数据库操作) ↓ 数据库 ↑ MyBatis (结果返回) ↑ Service (业务逻辑处理结果) ↑ Controller (处理结果) ↓ ViewResolver (视图解析) ↓ View (页面渲染) ↓ 响应返回给用户 ``` ### 示例代码 #### Controller层接收请求 在Controller中,使用`@RequestBody`接收前端发送的JSON数据,并将其转换为Java对象。处理完成后,通过`@ResponseBody`将结果返回前端: ```java @Controller public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/checkUserLogin", method = RequestMethod.POST) @ResponseBody public User checkUserLogin(@RequestBody User user) { if (user.getUser_name() != null) { user = userService.findByName(user.getUser_name()); } else if (user.getUser_mail() != null) { user = userService.findByMail(user.getUser_mail()); } return user; } } ``` #### Service层处理业务逻辑 Service层通常包含具体的业务逻辑,例如数据库查询操作。它通过MyBatis的Mapper接口访问数据库,并将结果返回给Controller层: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User findByName(String username) { return userMapper.findByUsername(username); } @Override public User findByMail(String email) { return userMapper.findByEmail(email); } } ``` #### Mapper层操作数据库 Mapper接口通过MyBatis注解或XML文件定义SQL语句,负责与数据库进行交互: ```java @Mapper public interface UserMapper { @Select("SELECT * FROM users WHERE username = #{username}") User findByUsername(String username); @Select("SELECT * FROM users WHERE email = #{email}") User findByEmail(String email); } ``` #### 前端请求示例 前端通常使用AJAX方式发送请求,数据以JSON格式传输。例如,使用jQuery发送POST请求: ```javascript $.ajax({ url: '/checkUserLogin', type: 'POST', contentType: 'application/json', data: JSON.stringify({ user_name: 'testUser' }), success: function(response) { console.log(response); } }); ``` ### 页面跳转与数据传递 除了AJAX请求,SSM框架也支持传统的页面跳转方式。例如,通过`Model`对象将数据传递到JSP页面: ```java @Controller public class TestController { @RequestMapping("/test") public String test(Model model) { model.addAttribute("msg", "Hello SSM"); return "login/test"; } } ``` 在Spring MVC配置文件中,通常会配置视图解析器,以确定JSP页面的位置: ```xml <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> ``` 在JSP页面中,可以通过EL表达式获取传递的数据: ```jsp <p>${msg}</p> ``` ### 总结 SSM框架通过Spring MVC接收前端请求,调用Service层处理业务逻辑,并使用MyBatis操作数据库。最终,处理结果通过`@ResponseBody`返回给前端,或者通过`Model`对象传递至JSP页面进行渲染。整个流程清晰、模块化,适用于构建结构良好的Web应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值