day2021-10-15(ssm整合项目&maven)

1.3 答疑

1.3.1 数据库迁移,表不可访问

  • mysql数据库引擎配置:InnoDB、MyISAM等
    • MyISAM:生成数据库文件,Table.frm、Table.MYD、Table.MYI等,直接复制,可以直接使用。
    • InnoDB,默认引擎,生成数据库文件 Table.frm ,复制过来不能使用,需要一个目录文件 data/ibdata1

1.3.2 RESTFul返回值字符串乱码

package com.czxy.ssm.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import java.nio.charset.StandardCharsets;
import java.util.List;

@Configuration
@ComponentScan(basePackages="com.czxy.ssm.controller")
@EnableWebMvc
public class MvcConfiguration implements WebMvcConfigurer {

	@Override
	public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
		converters.forEach(httpMessageConverter -> {
			// 处理字符串转换编码方式
			if(httpMessageConverter instanceof StringHttpMessageConverter) {
				StringHttpMessageConverter stringHttpMessageConverter = (StringHttpMessageConverter) httpMessageConverter;
				stringHttpMessageConverter.setDefaultCharset(StandardCharsets.UTF_8);
			}
			// 处理对象转换编码方式
			if(httpMessageConverter instanceof MappingJackson2HttpMessageConverter) {
				((MappingJackson2HttpMessageConverter) httpMessageConverter).setDefaultCharset(StandardCharsets.UTF_8);
			}
		});
	}
}

2. SSM整合案例:

2.1 删除

2.1.1 目标

  • 点击“删除” 连接,删除对应的数据

2.1.2 步骤

  • 步骤1:点击“删除”,询问“是否要删除?”

    • 确定:进行删除操作
    • 取消:没有任何操作
  • 步骤2:编写controller,获得需要删除的用户id

    /user/deleteUser?id=1234
    
  • 步骤3:编写service,通过id删除即可

2.1.3 实现

  • jsp :/WEB-INF/pages/list.jsp

    <a href="${pageContext.request.contextPath}/user/deleteUser?id=${user.uid}" οnclick="return confirm('您确定要删除么?')">删除</a>
    
  • controller

        /**
         * 删除用户
         * @param id
         * @return
         */
        @RequestMapping("/deleteUser")
        public String deleteUser(String id) {
            // 删除用户
            userService.delete(id);
            // 重定向列表页面
            return "redirect:/user/selectAll.action";
        }
    
  • service : 接口 + 实现类

        /**
         * 删除用户
         * @param id
         */
        void delete(String id);
    
        @Override
        public void delete(String id) {
            userMapper.deleteByPrimaryKey(id);
        }
    

2.2 修改

2.2.1 目标

  • 修改用户信息

2.2.2 步骤

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tAojWTMq-1634547634763)(assets/image-20211015153827786.png)]

2.2.3 实现

  • jsp列表页:list.jsp

    <a href="${pageContext.request.contextPath}/user/preEdit?id=${user.uid}" >修改</a>
    
  • controller : preEdit

     /**
         * 修改前操作
         * @param id
         * @return
         */
        @RequestMapping("/preEdit")
        public String preEdit(String id, Model model) {
            //1 查询详情
            User user = userService.selectById(id);
            //2 将结果存放model
            model.addAttribute("user", user);
            //3 请求转发到编辑页面
            return "edit";
        }
    
  • service : selectById

        /**
         * 通过id查询详情
         * @param id
         * @return
         */
        User selectById(String id);
    
        @Override
        public User selectById(String id) {
            return userMapper.selectByPrimaryKey(id);
        }
    
  • edit.jsp 回显

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <%--  错误信息   --%>
        <font color="red"> ${msg}</font>
    
        <form action="${pageContext.request.contextPath}/user/edit.action" method="post">
            <!--隐藏域,表单提交,但用户看不到-->
            <input type="hidden" name="uid" value="${user.uid}" />
            用户名:<input type="text" name="userName" value="${user.userName}" /> <br/>
            昵称:<input type="text" name="name" value="${user.name}" /> <br/>
            <input type="submit" value="编辑用户"/>
        </form>
    </body>
    </html>
    
    
  • controller: edit

     @RequestMapping("/edit")
        public String edit(User user, Model model) {
            try {
                // 进行修改
                boolean result = userService.update(user);
                if(result) {
                    // 修改成功 -- 重定向列表
                    return "redirect:/user/selectAll.action";
                } else {
                    // 失败 -- 编辑页面显示
                    model.addAttribute("msg", "更新失败");
                    return "edit";
                }
            } catch (Exception e) {
                model.addAttribute("msg", e.getMessage());
                return "edit";
            }
        }
    
  • service:edit

        /**
         * 修改
         * @param user
         * @return
         */
        boolean update(User user);
    
        @Override
        public boolean update(User user) {
            // 更新非空数据
            int update = userMapper.updateByPrimaryKeySelective(user);
            return update == 1;
        }
    

3. Maven

3.1 什么是Maven

  • maven 是管理项目的工具。
    • 项目各个阶段:清理、初始化、编译、测试、报告 、打包、部署、站点生成。
  • maven目前开发内容:
    • 依赖管理:维护jar包。
    • 测试
    • 打包
  • 核心思想:项目对象模型 (Project Object Model),每一个maven项目,都有一个pom.xml文件,进行项目管理。

3.2 仓库

  • 仓库分类:私有仓库、中央仓库、第三方仓库(远程)
    • 私有仓库:每个人本地仓库,方面离线操作。
    • 中央仓库:官方仓库,存放所有依赖。在国外。https://search.maven.org/
    • 第三方仓库:由非盈利机构搭建第三方私有仓库,对外提供依赖下载。
      • 阿里云
      • 华为云

3.3 maven环境搭建

3.3.1 下载

  • 版本:3.5.3 (3.3.9)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bOl1f6eZ-1634547634765)(assets/image-20211015165207081.png)]

3.3.2 安装

  • 将下载资源解压即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rurPhcEX-1634547634767)(assets/image-20211015165241742.png)]

3.3.3 配置:系统环境变量

  • 配置window 系统环境变量
    • MAVEN_HOME:
      • 内容:maven安装目录
      • 原因:方法其他环境变量使用、方便其他软件使用(idea)
    • path:
      • 内容:maven的bin目录(使用MAVEN_HOMN 确定安装目录)
      • 原因:在cmd可以使用maven命令。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ccNPmKso-1634547634769)(assets/image-20211015165401663.png)]

3.4 Maven使用

3.4.1 私有仓库配置

  • 私有仓库的根目录:D:\Java\maven\yycg_repository

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KUyqSRYY-1634547634770)(assets/image-20211015170218497.png)]

  • maven配置私有仓库 %MAVEN_HOME%/conf/settings.xml

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pyub44TT-1634547634771)(assets/image-20211015170413277.png)]

3.4.2 配置镜像(第三方仓库,私服)

  • 配置 aliyun的镜像

        <mirror>
          <id>alimaven</id>
          <name>aliyun maven</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
          <mirrorOf>central</mirrorOf>        
        </mirror>
    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uK7bwrh8-1634547634772)(assets/image-20211015170603382.png)]

3.5 IDEA 配置

3.5.1 IDEA 配置 maven

  • idea在安装时,自动使用 MAVEN_HOME 配置的 本地maven。

  • 如果没有识别,手动配置,采用通用配置 File/Settings/Maven...

    • 配置1:确定maven安装目录

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kXyAB6t1-1634547634772)(assets/image-20211015171903134.png)]

    • 配置2:更新本地仓库

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-be76yVk4-1634547634773)(assets/image-20211015172144102.png)]

3.5.2 新项目配置

  • 如果通用配置可以,建议使用通用。

  • 如果通用不可用,使用新项目配置。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kVzyaFCC-1634547634774)(assets/image-20211015172446366.png)]

3.5.3 配置失败,重新配置

  • 将idea配置信息删除(如果删除,相当于新安装的idea,包括激活码没有了。)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JlxG2hr1-1634547634774)(assets/image-20211015172730272.png)]

3.6 IDEA 中 maven使用

3.6.1 创建maven项目

  • 步骤1:选择maven,进行项目创建

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zP52OM7B-1634547634774)(assets/image-20211015174748101.png)]

  • 步骤2:填写项目详情

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QUPRTTBp-1634547634775)(assets/image-20211015175027597.png)]

  • 步骤3:开启自动导入

    • idea 2019 能够选择开启自动导入
    • idea 2020及其之后版本,必须手动操作

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z87yR5Xa-1634547634775)(assets/image-20211015175108410.png)]

3.6.2 基本使用

  • maven项目的生命周期命令的使用。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kUzxsXmP-1634547634776)(assets/image-20211015180237091.png)]

3.6.3 坐标

  • 坐标:在maven中每一个项目都一个唯一标识,这个标识称为坐标,也称为依赖 dependency 。

  • 坐标组成:组、标识、版本

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7StMaW5a-1634547634776)(assets/image-20211015180522298.png)]

  • 通过坐标完成的使用

    • 在maven项目中,通过坐标可以导入对应的jar包。
    • 可以在本地仓库中,通过坐标获得jar包具体的位置。
  • 使用坐标

    • 情况1:直接使用

          <dependencies>
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>4.9</version>
              </dependency>
          </dependencies>
      
    • 情况2:先锁定版本,再使用

          <!-- 锁定版本   -->
          <dependencyManagement>
              <dependencies>
                  <dependency>
                      <groupId>junit</groupId>
                      <artifactId>junit</artifactId>
                      <version>4.9</version>
                  </dependency>
              </dependencies>
          </dependencyManagement>
      
          <!--使用-->
          <dependencies>
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
              </dependency>
          </dependencies>
      
      
    • 情况3:先定义版本,再锁定版本,最后使用

      	<!-- 版本号   -->
          <properties>
              <junit.version>4.9</junit.version>
          </properties>
      
          <!-- 锁定版本   -->
          <dependencyManagement>
              <dependencies>
                  <dependency>
                      <groupId>junit</groupId>
                      <artifactId>junit</artifactId>
                      <version>${junit.version}</version>
                  </dependency>
              </dependencies>
          </dependencyManagement>
      
          <!--使用-->
          <dependencies>
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
              </dependency>
          </dependencies>
      

总结:ssm整合项目比较贴近真实业务流程,但还是有些繁琐和局限性,maven的出现改良了些许,但是只学了一半还没学如何使用,还需加强。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值