Spring MVC扩展和SSM框架整合

一、Spring MVC 框架中的 JSON 对象处理方法

在现代 Web 应用中,JSON 格式的数据交换变得越来越普遍。Spring MVC 提供了多种方式来处理 JSON 对象。

  1. 使用 Jackson 库
    • Spring MVC 可以很方便地与 Jackson 库集成。通过在项目中添加相关依赖,我们可以自动将 Java 对象序列化为 JSON 格式,以及将 JSON 数据反序列化为 Java 对象。
    • 例如,我们可以使用@ResponseBody注解在控制器方法上,当方法返回一个 Java 对象时,Spring MVC 会自动将其转换为 JSON 格式并写入 HTTP 响应体中。

   @RestController
   public class UserController {
       @GetMapping("/user")
       public @ResponseBody User getUser() {
           User user = new User();
           user.setName("John");
           user.setAge(30);
           return user;
       }
   }

在这个例子中,当访问/user路径时,Spring MVC 会将User对象转换为 JSON 格式,如{"name":"John","age":30}

  1. 自定义 JSON 序列化和反序列化
    • 有时候我们可能需要对 JSON 的序列化和反序列化过程进行更精细的控制。Jackson 提供了多种方式来实现自定义。
    • 我们可以通过实现JsonSerializerJsonDeserializer接口来定制特定类型的序列化和反序列化逻辑。

   public class CustomDateSerializer extends JsonSerializer<Date> {
       @Override
       public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
           SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
           jsonGenerator.writeString(sdf.format(date));
       }
   }

这里我们自定义了一个日期的序列化器,将Date对象格式化为特定的字符串格式。

二、Spring MVC 框架中的数据转换和格式化功能

  1. 数据类型转换
    • Spring MVC 提供了强大的数据类型转换机制。它可以自动将 HTTP 请求参数转换为控制器方法参数所需的类型。
    • 例如,当一个控制器方法接收一个整数类型的参数时,Spring MVC 会尝试将请求中的字符串参数转换为整数。如果转换失败,会抛出相应的异常。

   @GetMapping("/add")
   public String add(@RequestParam int num1, @RequestParam int num2) {
       int sum = num1 + num2;
       return "The sum is: " + sum;
   }

当用户在请求中输入两个数字作为参数时,Spring MVC 会自动将它们转换为整数。

  1. 数据格式化
    • 对于日期、数字等类型的数据,我们可以使用 Spring 的格式化功能来进行统一的格式处理。
    • 通过配置Formatter接口的实现类,我们可以定义如何将字符串格式化为特定类型的数据,以及如何将数据格式化为字符串。

   public class CustomDateFormatter implements Formatter<Date> {
       @Override
       public Date parse(String text, Locale locale) throws ParseException {
           SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
           return sdf.parse(text);
       }

       @Override
       public String print(Date date, Locale locale) {
           SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
           return sdf.format(date);
       }
   }

这个自定义的日期格式化器可以在应用中对日期进行统一的格式处理。

三、搭建 SSM 框架

  1. Spring 配置
    • 首先,我们需要配置 Spring 的核心容器。这包括定义 Bean、配置事务管理等。
    • applicationContext.xml文件中,我们可以定义数据源、事务管理器等 Bean。

   <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
       <property name="driverClass" value="com.mysql.jdbc.Driver" />
       <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mydb" />
       <property name="user" value="root" />
       <property name="password" value="password" />
   </bean>

这里配置了一个 C3P0 数据源连接到 MySQL 数据库。

  1. SpringMVC 配置
    • 对于 SpringMVC,我们需要配置 DispatcherServlet 来处理请求。
    • web.xml文件中,我们进行如下配置:

   <servlet>
       <servlet-name>dispatcherServlet</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/springmvc-config.xml</param-value>
       </init-param>
       <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
       <servlet-name>dispatcherServlet</servlet-name>
       <url-pattern>/</url-pattern>
   </servlet-mapping>

同时,在springmvc-config.xml文件中,我们配置视图解析器等内容。

  1. MyBatis 配置
    • MyBatis 的配置主要包括定义数据库映射文件和配置 SQLSessionFactory。
    • mybatis-config.xml文件中,我们可以配置数据库连接信息、映射文件路径等。
   <configuration>
       <environments default="development">
           <environment id="development">
               <transactionManager type="JDBC" />
               <dataSource type="POOLED">
                   <property name="driver" value="com.mysql.jdbc.Driver" />
                   <property name="url" value="jdbc:mysql://localhost:3306/mydb" />
                   <property name="username" value="root" />
                   <property name="password" value="password" />
               </dataSource>
           </environment>
       </environments>
       <mappers>
           <mapper resource="com/example/mapper/UserMapper.xml" />
       </mappers>
   </configuration>

四、基于 SSM 框架的代码开发

  1. Service 层开发
    • 在 Service 层,我们可以编写业务逻辑代码。例如,对于用户管理功能,我们可以有一个UserService接口和其实现类。
   public interface UserService {
       List<User> getAllUsers();
       User getUserById(int id);
       void addUser(User user);
       void updateUser(User user);
       void deleteUser(int id);
   }

   @Service
   public class UserServiceImpl implements UserService {
       @Autowired
       private UserMapper userMapper;

       @Override
       public List<User> getAllUsers() {
           return userMapper.getAllUsers();
       }

       // 其他方法实现类似
   }

  1. Controller 层开发
    • 在 Controller 层,我们处理 HTTP 请求并调用 Service 层的方法。
   @Controller
   public class UserController {
       @Autowired
       private UserService userService;

       @GetMapping("/users")
       public String getAllUsers(Model model) {
           List<User> users = userService.getAllUsers();
           model.addAttribute("users", users);
           return "usersList";
       }

       // 其他请求处理方法类似
   }
  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值