大四短时间培训0901(ssm案例增删改查、kettel数据管理)

在实际的项目开发中,一个软件的从开始到编码的过程和公司里面的一些实际的东西,在公司中,一个软件从需求到上市,首先就是进行需求的分析,需求文档的编写,对一些功能和业务流的设计,而后就是根据用户的需求和程序员进行交流,对一些功能的实现是否是能够,是否是在规定时间内实现出来,而后就是数据库的设计,固然在这一环节,就是只有经验搞得程序员才能参与,由于在数据库的设计上,咱们须要有长久的考虑,往后的数据库的改变,是会带来不少的没必要要的麻烦,由于底层设计的东西,可能就跟一个字段的变化,产生不少的问题,就要改变不少的代码,这时候就是对咱们的经验的考察,只有经验丰富,老练的程序员才能参与数据库的设计,在数据库设计完成以后,就是须要对前端进行设计,这时候或许有ui设计者,而后就是经过建模,对系统进行整合和描绘,对代码中的类和属性进行整理,在uml的建模完成以后,就是程序员进行代码编写的阶段了,在代码编写完成以后,就是对咱们写的代码进行校验,再没问题以后,就会将项目传给高级的软件工程师,进行框架和代码上的优化,在优化完成以后,就是软件的测试阶段,用到的主要的技术就是黑盒和白盒技术,测试完成以后,就是项目的交付阶段了。今天主要讲的是ssm框架的增删改查(这部分是要本身进行实现),并无具体的将实现的过程,而后就是要实现文件的上传以及文件的下载,经过今天的学习对ssm的框架有了更深一步的了解,对项目的运行以及页面之间的跳转,控制器的解析等等。我在编程的时候,用到的工具是idea,这里面有的上面和eclipse是不同的,相对eclipse在不少的方面我的感受使用起来更加的方便。当咱们在前端进行部分java代码编写时候,就会出现不少的问题,这时候就须要导入必定得依赖,来支持咱们的功能:前端

<dependency>
    <
groupId>javax.servlet</groupId>
    <
artifactId>jsp-api</artifactId>
    <
version>2.0</version>
    <
scope>provided</scope>
</
dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <
groupId>javax.servlet</groupId>
    <
artifactId>javax.servlet-api</artifactId>
    <
version>3.1.0</version>
    <
scope>provided</scope>
</
dependency>java

这两个依赖包是必不可少的。程序员

而后,在咱们想要用框架进行上传文件的时候,须要前台和后台的搭建主要的代码:ajax

在前端,咱们就是须要用form进行表单的提交:sql

<form id="fileform" method="post" enctype="multipart/form-data">数据库

<input type="file" id="fileupload" name="uploadfile"/>编程

<button id="upload_btn">上传文件</button>json

</form>后端

Js的代码:api

var form = new FormData(document.getElementById("fileform"));

                   $.ajax({

                    type:"post",

                  url:"upload",

          data:form,

          processData:false,

          contentType:false,

          dataType:'text',

          success:function(data){

                   

          }

        });

后端的代码:

@RequestMapping("upload")

          public String testupload(@RequestParam("uploadfile") MultipartFile file,

          HttpServletRequest request) throws IllegalStateException, IOException{

                   if(!file.isEmpty()) {

            //上传文件路径

            String path = request.getSession().getServletContext().

                             getRealPath(File.separator+"WEB-INF"+File.separator+"testupload");

            //上传文件名

            String filename = file.getOriginalFilename();

            File filepath = new File(path,filename);

            //判断路径是否存在,若是不存在就建立一个

            if (!filepath.getParentFile().exists()) {

                filepath.getParentFile().mkdirs();

            }

            //将上传文件保存到一个目标文件当中

            file.transferTo(new File(path + File.separator + filename));

            //输出文件上传最终的路径测试查看

            return String.valueOf(file.getSize());

        } else {

 

            return "0";

}

          }

而且提交的方法必须是post的方法,并且在上传两次相同文件名称的文件的时候,在后台接收到的文件就会出现重名的状况。

文件的下载的前台的主要代码:

<td><a class='down_file_btn' href='downloadfile/"+data[i].fid+"'>下载</a>

在后台仍是同样要进行处理:

          @RequestMapping(value = "downloadfile/{fid}",produces = "application/json;charset=utf-8")

          public void downloadlm(@PathVariable Integer fid,HttpServletRequest request,

          HttpServletResponse response,Model model) throws IOException {

                   Myfile myFile = loginService.selectFileById(fid);

                   String path = request.getSession().getServletContext().

                   getRealPath(File.separator+"WEB-INF"+File.separator+"testupload");

                   String filename=myFile.getUrl().substring(myFile.getUrl().lastIndexOf("\\")+1); 

                   File file = new File(path+File.separator+filename);

                   //设置响应的头信息,解决文件名为中文乱码的问题

                   response.setHeader("content-disposition", "attachment;filename=

                   "+URLEncoder.encode(file.getName(), "utf-8"));

                   //使用文件输入流读取下载文件信息

                   FileInputStream in = new FileInputStream(file);

                   //获得响应流中的输出流

                   OutputStream out = response.getOutputStream();

                   //创建一个缓存区

                   byte[] buffer = new byte[1024];

                  

                   int len = 0;

                   //把输入流中的数据经过循环写入到响应流中

                   while((len = in.read(buffer)) > 0) {

                             out.write(buffer,0,len);

                   }

                   

                   in.close();

                   out.close();

                  

                  

          }

而后就是使用ssm的框架对咱们的数据信息进行增删改查的操做,这里由于我以前作过相同的功能,框架都是现成的,就是稍微改了点东西,在咱们进行数据库的操做的时候,首先就是咱们的配置是必不可少的,首先就是对咱们数据库的链接上的不一样,咱们能够经过配置文件进行连接,不在像以前的jdbc,每次进行数据库的操做都是要用到咱们的数据库的连接,在每次的调用上,就显得很繁琐,这就是框架优势的体现:

,而后就是对数据库的操做也全是经过mapper进行的,不须要咱们每次都须要经过不一样的参数的方法的封装,这时候就只须要咱们在xxxmapper.xml文件中进行相关的配置操做,在SpringBootMapper有两种方式,一种是经过xml的方式进行数据库的操做,还有就是经过自定义类的方式进行,这时候,须要在咱们的类文件上加上Mapper的注解,或者是在咱们的config文件或者是主函数启动类上加上mapperscan的注解,这样就能够告诉咱们的程序,咱们的Mapper在哪里,而后就能够将一个文件夹下的全部的文件定义为Mapper,这样就是咱们在大量的Mapper的时候经常使用的一种方式。而后就是咱们的在controller中进行咱们的请求解析,而后经过不一样的解析返回不一样的访问页面:

@GetMapping("deleteEmp")
public String deleteEmployee(Employee employee){
    
employeeService.deleteEmp(employee.getLastName());
    
return "success";
}

这种就是在页面上发送deleteEmp的请求,而后咱们在后台就能够进行地址的解析,返回固定的东西给前台的显示

后来老师还讲到了一个工具的使用,这样就是解决了不少的问题,我感受就是对于数据库的操做的方便大大的提升,我以前在进行实习的过程当中,公司天天早晨都会有人早到公司,对每一个数据库进行安全的验证,以及系统里面的每一个模块的肯定没有问题,也常常在晚上跑sql脚本,对数据库进行数据的维护,若是有了这个东西,感受那种工做就会简单不少,固然做为一个实习生,公司是不会让我接触这些维护数据库的工做。

这个工具就是kettel,就是一个etl对数据进行处理的工具,也学了不少这个工具的使用,如今一些基本的操做仍是已经掌握了

在实际的项目开发中,一个软件的从开始到编码的过程和公司里面的一些实际的东西,在公司中,一个软件从需求到上市,首先就是进行需求的分析,需求文档的编写,对一些功能和业务流的设计,而后就是根据用户的需求和程序员进行交流,对一些功能的实现是否是能够,是否是在规定时间内实现出来,而后就是数据库的设计,固然在这一环节,就是只有经验搞得程序员才能参与,由于在数据库的设计上,咱们须要有长久的考虑,往后的数据库的改变,是会带来不少的没必要要的麻烦,由于底层设计的东西,可能就跟一个字段的变化,产生不少的问题,就要改变不少的代码,这时候就是对咱们的经验的考察,只有经验丰富,老练的程序员才能参与数据库的设计,在数据库设计完成以后,就是须要对前端进行设计,这时候或许有ui设计者,而后就是经过建模,对系统进行整合和描绘,对代码中的类和属性进行整理,在uml的建模完成以后,就是程序员进行代码编写的阶段了,在代码编写完成以后,就是对咱们写的代码进行校验,再没问题以后,就会将项目传给高级的软件工程师,进行框架和代码上的优化,在优化完成以后,就是软件的测试阶段,用到的主要的技术就是黑盒和白盒技术,测试完成以后,就是项目的交付阶段了。今天主要讲的是ssm框架的增删改查(这部分是要本身进行实现),并无具体的将实现的过程,而后就是要实现文件的上传以及文件的下载,经过今天的学习对ssm的框架有了更深一步的了解,对项目的运行以及页面之间的跳转,控制器的解析等等。我在编程的时候,用到的工具是idea,这里面有的上面和eclipse是不同的,相对eclipse在不少的方面我的感受使用起来更加的方便。当咱们在前端进行部分java代码编写时候,就会出现不少的问题,这时候就须要导入必定得依赖,来支持咱们的功能:

<dependency>
    <
groupId>javax.servlet</groupId>
    <
artifactId>jsp-api</artifactId>
    <
version>2.0</version>
    <
scope>provided</scope>
</
dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <
groupId>javax.servlet</groupId>
    <
artifactId>javax.servlet-api</artifactId>
    <
version>3.1.0</version>
    <
scope>provided</scope>
</
dependency>

这两个依赖包是必不可少的。

而后,在咱们想要用框架进行上传文件的时候,须要前台和后台的搭建主要的代码:

在前端,咱们就是须要用form进行表单的提交:

<form id="fileform" method="post" enctype="multipart/form-data">

<input type="file" id="fileupload" name="uploadfile"/>

<button id="upload_btn">上传文件</button>

</form>

Js的代码:

var form = new FormData(document.getElementById("fileform"));

                   $.ajax({

                    type:"post",

                  url:"upload",

          data:form,

          processData:false,

          contentType:false,

          dataType:'text',

          success:function(data){

                   

          }

        });

后端的代码:

@RequestMapping("upload")

          public String testupload(@RequestParam("uploadfile") MultipartFile file,

          HttpServletRequest request) throws IllegalStateException, IOException{

                   if(!file.isEmpty()) {

            //上传文件路径

            String path = request.getSession().getServletContext().

                             getRealPath(File.separator+"WEB-INF"+File.separator+"testupload");

            //上传文件名

            String filename = file.getOriginalFilename();

            File filepath = new File(path,filename);

            //判断路径是否存在,若是不存在就建立一个

            if (!filepath.getParentFile().exists()) {

                filepath.getParentFile().mkdirs();

            }

            //将上传文件保存到一个目标文件当中

            file.transferTo(new File(path + File.separator + filename));

            //输出文件上传最终的路径测试查看

            return String.valueOf(file.getSize());

        } else {

            return "0";

        }

          }

而且提交的方法必须是post的方法,并且在上传两次相同文件名称的文件的时候,在后台接收到的文件就会出现重名的状况。

文件的下载的前台的主要代码:

<td><a class='down_file_btn' href='downloadfile/"+data[i].fid+"'>下载</a>

在后台仍是同样要进行处理:

          @RequestMapping(value = "downloadfile/{fid}",produces = "application/json;charset=utf-8")

          public void downloadlm(@PathVariable Integer fid,HttpServletRequest request,

          HttpServletResponse response,Model model) throws IOException {

                   Myfile myFile = loginService.selectFileById(fid);

                   String path = request.getSession().getServletContext().

                   getRealPath(File.separator+"WEB-INF"+File.separator+"testupload");

                   String filename=myFile.getUrl().substring(myFile.getUrl().lastIndexOf("\\")+1); 

                   File file = new File(path+File.separator+filename);

                   //设置响应的头信息,解决文件名为中文乱码的问题

                   response.setHeader("content-disposition", "attachment;filename=

                   "+URLEncoder.encode(file.getName(), "utf-8"));

                   //使用文件输入流读取下载文件信息

                   FileInputStream in = new FileInputStream(file);

                   //获得响应流中的输出流

                   OutputStream out = response.getOutputStream();

                   //创建一个缓存区

                   byte[] buffer = new byte[1024];

                  

                   int len = 0;

                   //把输入流中的数据经过循环写入到响应流中

                   while((len = in.read(buffer)) > 0) {

                             out.write(buffer,0,len);

                   }

                   

                   in.close();

                   out.close();

                  

                  

          }

而后就是使用ssm的框架对咱们的数据信息进行增删改查的操做,这里由于我以前作过相同的功能,框架都是现成的,就是稍微改了点东西,在咱们进行数据库的操做的时候,首先就是咱们的配置是必不可少的,首先就是对咱们数据库的链接上的不一样,咱们能够经过配置文件进行连接,不在像以前的jdbc,每次进行数据库的操做都是要用到咱们的数据库的连接,在每次的调用上,就显得很繁琐,这就是框架优势的体现:

,而后就是对数据库的操做也全是经过mapper进行的,不须要咱们每次都须要经过不一样的参数的方法的封装,这时候就只须要咱们在xxxmapper.xml文件中进行相关的配置操做,在SpringBootMapper有两种方式,一种是经过xml的方式进行数据库的操做,还有就是经过自定义类的方式进行,这时候,须要在咱们的类文件上加上Mapper的注解,或者是在咱们的config文件或者是主函数启动类上加上mapperscan的注解,这样就能够告诉咱们的程序,咱们的Mapper在哪里,而后就能够将一个文件夹下的全部的文件定义为Mapper,这样就是咱们在大量的Mapper的时候经常使用的一种方式。而后就是咱们的在controller中进行咱们的请求解析,而后经过不一样的解析返回不一样的访问页面:

@GetMapping("deleteEmp")
public String deleteEmployee(Employee employee){
    
employeeService.deleteEmp(employee.getLastName());
    
return "success";
}

这种就是在页面上发送deleteEmp的请求,而后咱们在后台就能够进行地址的解析,返回固定的东西给前台的显示

后来老师还讲到了一个工具的使用,这样就是解决了不少的问题,我感受就是对于数据库的操做的方便大大的提升,我以前在进行实习的过程当中,公司天天早晨都会有人早到公司,对每一个数据库进行安全的验证,以及系统里面的每一个模块的肯定没有问题,也常常在晚上跑sql脚本,对数据库进行数据的维护,若是有了这个东西,感受那种工做就会简单不少,固然做为一个实习生,公司是不会让我接触这些维护数据库的工做。

这个工具就是kettel,就是一个etl对数据进行处理的工具,也学了不少这个工具的使用,如今一些基本的操做仍是已经掌握了

相关文章
相关标签/搜索