整理课题(使用ssm,有简单图片的上传和分页)中遇到的问题

本文详细介绍了在Web项目中实现图片上传的具体步骤,包括所需jar包、配置文件上传解析器及最大上传大小设置。同时,分享了如何部署Tomcat配置虚拟路径保存和访问图片,以及使用PageHelper实现分页功能的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.图片的上传

  1. 我写的是web项目,所以需要先导入jar包
    commons-fileupload-1.3.1.jar
    commons-io-2.2.jar
  2. 表单的提交方式必须为post 而且编码必须为二进制编码。enctype=“multipart/form-data”
    就是类似于下面的代码
<form action="${pageContext.request.contextPath}/house/updateHouseById?h_id=${house.h_id}" method="post" enctype="multipart/form-data">
</form>
  1. 再springmvc中加入文件上传解析器,配置文件的最大上传大小。
<!-- 配置文件上传解析器 -->
 <bean id = "multipartResolver"
  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <property name="maxUploadSize" value="10240000"></property> 
 </bean>
  1. controller:
@RequestMapping("addEmp")
public String addEmp(Emp emp, MultipartFile myfile, HttpServletRequest request) {
	// 把文件放到指定服务器下的真实路径。
  	String path = request.getSession().getServletContext().getRealPath("/image");
  	String head_img = myfile.getOriginalFilename();// 获取上传文件的名称
 	String fileName = "";
  	if (head_img == null || head_img.equals("")) {
   		fileName = "default.jpg"; //没有选择上传的文件,采用默认值的形式。
  	} else {
   		String hz = head_img.substring(head_img.lastIndexOf(".")); // 得到文件的后缀
   		fileName = new Date().getTime() + hz;
   		File target = new File(path + "/" + fileName); // 获取文件上传的真实路径
   		try {
   		 	myfile.transferTo(target); // 把文件保存到真实路径下。
   		} catch (IllegalStateException | IOException e) {
   			return "addPage"; // 文件上传失败
   		}
  	}
  	emp.setHead_img("image/" + fileName);
  	empService.insertEmp(emp); // 把文件名以及员工的信息保存到数据库中
  	return "redirect:list";
  }

需要了上面的还需要注意的就是:jsp中关于图片的信息需要单独传到controller里面,这样就需要对应的值要一样。都对应成myfile
在这里插入图片描述
在这里插入图片描述
事后又学习了如何部署tomcat配置虚拟路径保存、访问图片。大佬们写好的,我就直接引用过来了。

https://www.jianshu.com/p/c8379584feb4
https://www.cnblogs.com/yangshuyuan1009/p/10954154.html

2.分页

  1. 导入相关的jar
    jsqlparser-2.0.jar
    pagehelper-5.1.10.jar

  2. 再spring配置文件中加入

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource"></property>
  <property name="configLocation" value="classpath:Mybatis-config.xml"></property>
  //配置有关分页
    <property name="plugins">
    <bean class="com.github.pagehelper.PageInterceptor">
       <property name="properties">
          <props>
             <prop key="reasonable">true</prop>
          </props>
       </property>
    </bean>
   </property>
 </bean>
  1. service中代码进行修改,只需要在对应的Handler下面加上这个就可以了
	String p = request.getParameter("p");
  	int currentPage = 1;
  	if(p != null) {
  		currentPage = Integer.parseInt(p);
  	}
  	PageHelper.startPage(currentPage,4);
  	PageInfo<House> pageInfo = new PageInfo<>(list);
  	model.addAttribute("pageinfo", pageInfo);
  	return "flats/list";

3.在项目中出现的异常

这里只说碰到的难处理的,在网上不好找的。

  1. 这个异常碰到的时候超级恶心,真的我找了将近两个小时,不多说,直接上图
    在这里插入图片描述
    当时碰到这个的时候,我当时也按照一些文章里面的方法,看了一下我有没有改动namespace,和xml中每个id和接口的方法名对应不。看了一遍并没有发现错误,并且当时还检查了一遍spring中配置mybatis的地方,也没有发现错误。我又仔细看了一下报错的异常,发现底下还有一个异常。
    在这里插入图片描述
    我想起来,之前都可以运行,但是新写了一个添加方法。我又重新看了一下那个新的添加方法。
    在这里插入图片描述
    发现自己把parameterType写成了parameterMap,当时是alt+/,没有仔细看,导致了这个异常,把这个地方一改就可以了。事后也了解了这两个的区别。
    引用别人写好的一篇文章,有详细的例子说明

https://blog.csdn.net/zwj1030711290/article/details/54983118

  1. 就是关于list.remove()使用的时候,一个小坑。
    直接引用别人的了,这里懒得再描述了。

https://blog.csdn.net/pelifymeng2/article/details/78085836

4.总结

总结一下这次在课题的过程中发现的问题:就是自己对于web方面的当时没有学好,延误了自己的课题进度,也耽误了我们组内其他人的进度,需要对web方面进行再一步的学习。还有就是在处理问题的方面,往往是去找第一个异常的问题,但是当第一个解决不了的时候,可以看一下后面的异常,说不定是由后面的导致前面的报错呢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值