spring学习过程中遇到的问题及解决,eclipse使用过程的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cheng_cuo_tuo/article/details/84404436

这学期的课程安排是学习Spring+MyBatis,使用的教材是《Spring+MaBits企业应用实战》作者:疯狂软件
spring方面的已经学完由一星期的,我把最近学习过程中出现的问题和解决方法的记录,写下来,也可以去我的资源里面下载word版本。

1. 中文乱码问题:

1.修改tomcat的server.xml文件在端口后面加上language=”utf-8”,没有解决问题
2.配置spring的编码过滤器,为了防止spring中的post方法提交的时候中文乱码
在web.xml文件中,添加spring的编码过滤器

<!-- 配置编码方式过滤器,注意一点:要配置在所有过滤器的前面 -->
  <filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

2. 完美解决中文乱码问题


修改工程名和类名:
点击需要修改的工程或类(这一步相当于选中),点击file选择Rename,最后确认修改
在这里插入图片描述在这里插入图片描述

3. springmvc引入css样式无法显示

原因:springmvc默认拦截所有的请求,包括html找css的请求,所以需要把静态资源隔离出来。
解决方法:在springmvc-config.xml中添加:在这里插入图片描述
<mvc:resources location=”/css” mapping=”/css/**”></mvc:resources>
其中css文件夹放在WebContent文件夹下。
在css文件中能够添加外部文件images中的照片出错
background: url(images/button-bg.png) repeat-x;
原来url中的路径是相对于.css文件所在的位置,所以要返回上一目录,再找到images文件夹。
background: url(…/images/button-bg.png) repeat-x;

4. jsp的的css样式无法显示:

检查springmvc是否加了静态资源加载,设置springmvc-config.xml

<mvc:annotation-driven /> 
	 <!-- 静态资源访问 --> <mvc:resources mapping="/DataTables/**" location="/DataTables/" /> 
	 <!--从根目录开始找资源--> 
	 <!-- <mvc:resources location="/" mapping="/**/*.js"/> 
	 <mvc:resources location="/" mapping="/**/*.css"/> --> 
	 <mvc:default-servlet-handler /> 
	 <!-- 添加注解驱动 --> 
	 <!-- <mvc:annotation-driven /> --> 
	 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
		 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView">
		 </property> <property name="prefix" value="/WEB-INF/jsp/" /> 
		 <property name="suffix" value=".jsp" /> 
	 </bean>

终极解决方法在web.xml文件中添加配置,注意这个配置要加在springmvc之前。

<servlet-mapping> 
  <servlet-name>default</servlet-name>
  <url-pattern>*.jpg</url-pattern> 
  </servlet-mapping> <servlet-mapping> 
  <servlet-name>default</servlet-name> 
  <url-pattern>*.js</url-pattern> 
  </servlet-mapping> <servlet-mapping> 
  <servlet-name>default</servlet-name> 
  <url-pattern>*.css</url-pattern> 
  </servlet-mapping>

还出现了一个错误,在eclipse中的css只至此.jpg图片

5. 数据库存储照片报错:

实际上并不是把所有的图片存在数据库,实际上存储的是图片的位置。
mysqlDataTruncation:Data truncationn:data too lon for column ‘image’ at r 1
很明显说的是数据库的长度不够,将blob改为longblob就可以可

public class InputPhoto {
	private Connection conn;
	private PreparedStatement presta;
	private ResultSet res;
	private InputStream in;
	private OutputStream ou;
	
	private String path = "images/2.jpg";
	
	private String uri = "jdbc:mysql://localhost/learndb";
	public InputPhoto() {
		try {
			in = new FileInputStream(new File(path));
			ou = new FileOutputStream("C:\\Users\\lei02\\Desktop\\参考\\22.jpg");
			Class.forName("com.mysql.jdbc.Driver");
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
		} catch (ClassNotFoundException ex) {
			ex.printStackTrace();
		}
	}
	
	public boolean input() {
		
		try {
			conn = DriverManager.getConnection(uri, "root", "021191");
			presta = conn.prepareStatement("INSERT INTO T_image(Image) value(?)");
			//三个参数,第一个表示是sql语句中的第几个变量,第二个是输入流inputstram第三个是大小,使用in.available()就可以了。
			//将图片以二进制的形式存储,也就是获取文件的二进制流
			presta.setBinaryStream(1, in, in.available());
			int end = presta.executeUpdate();
System.out.println(end);
		} catch (IOException ex) {
			ex.printStackTrace();
			return false;
		}catch (SQLException ex) {
			ex.printStackTrace();
			return false;
		}
		return true;
	}
	
	public void getPhoto() {
		try {
			conn = DriverManager.getConnection(uri, "root", "021191");
			presta = conn.prepareStatement("SELECT Image FROM T_Image where id = 1");
			res = presta.executeQuery();
			//将resultset获取的二进制流交到一个读取流进行读取
			res.next();//将光标指向第一行
			in = res.getBinaryStream("image");//将数据库中名字为image的元素,按照数据流的方式读取
			byte[] b=new byte[in.available()]; //新建保存图片数据的byte数组,大小为可读取大小
			in.read(b);
			
			ou.write(b);
			ou.flush();//刷新
			ou.close();
		} catch(IOException ex) {
			ex.printStackTrace();
		} catch (SQLException ex) {
			ex.printStackTrace();
		}
	}
	
	
	public void delete() {
		//删除的文件路径中不能有中文,否则就会错误,无法删除
		File f = new File("C:\\Users\\lei02\\Desktop\\22.jpg");
		System.out.println(f.canRead());
		System.out.println(f.canWrite());
		System.out.println(f.delete());
	}
	
	public static void main(String[] args) {
		InputPhoto photo = new InputPhoto();
		//System.out.println(photo.input());
		//phote.getPhoto();
		photo.delete();
	}
}

6. eclipse最基本的java.lang包都找不到。

原因:jre出错
解决方法:需要修改为本机的jre
找到错误项目,右键。
在这里插入图片描述在这里插入图片描述点击edit,或者remove后重新添加
在这里插入图片描述点击environment,选择相应的运行环境。在这里插入图片描述选中之后记得点击apply and close
再点击finish
在这里插入图片描述点击apply应用在这里插入图片描述最后关闭就好了。

7. eclipse恢复删除内容

在这里插入图片描述选中要恢复的选项,点击右下角的restore就好了。在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cheng_cuo_tuo/article/details/84404436
今日推荐