01、 The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request “accept” headers.

2016-10-10今天遇到一个奇怪的错误,关于Springmvc的,我明明在Controller方法中写了@ResponseBody,返回一个Map,结果报了406错误。

菲律宾太阳 1Paste_Image.png

结果发现,少了一个jar包:

菲律宾太阳 2Paste_Image.png

加上去就没事了。

pom.xml

<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.1.0</version> </dependency> 

如果还不能解决,就检查在web.xml中配置的spring拦截后缀,不要使用.html后缀!

—————-解耦

参照了网上相关代码菲律宾太阳 3 
注意事项: 
1
springmvc.xml必须配置: 

02、 The method getServletContext() is undefined for the type HttpServletRequest

2016-10-11这个问题也挺奇怪的,我记得以前都是这么写:

//获取服务器的路径String dirPath =
request.getServletContext().getRealPath;

今天,这段代码竟然报错了,说这个方法未定义,我TM也是无语了。

原来,高版本的servlet已经不支持这个方法了。代替方案为:

String dirPath = request.getSession().getServletContext().getRealPath;

OK,完美解决。

  • 路径src下用loader(BeanFactory.class.getClassLoader().getResource(“bean.xml”).getPath();),web路径使用getrealpath(String
    path = this.getServletContext().getRealPath(“upload”);)
  • dom4j

Java代码 

02、 SpringMVC项目,什么都配好了,可就是进不了Controller,控制台也不报错,页面显示400 ?

原因:多半是因为数据绑定错误了,比如你用了@PathVariable,@RequestParam等,而前台没有传进来对应的值。那么就会出现这种情况,而且控制台不报错。

也可能是绑定JavaBean的时候,前台传过来一个String类型的日期,而JavaBean中的日期是Date格式的,它转不了,那么也可能会出现这个情况。

 菲律宾太阳 4

-------------xml中配置,id为寻找,class为所要创建的实际地址
<?xml version="1.0" encoding="UTF-8"?>
<beans>
    <!-- 配置AdminServiceImpl的清单 -->
    <bean id="adminService" class="com.itheima.service.impl.AdminServiceImpl"></bean>
    <!-- <bean id="adminService" class="com.itheima.service.impl.AdminServiceImpl2"></bean> -->

    <bean id="adminDao" class="com.itheima.dao.impl.AdminDaoImplMySql"></bean>
    <!-- <bean id="adminDao" class="com.itheima.dao.impl.AdminDaoImplOracle"></bean> -->

</beans>
----------------------使用
//用解耦合的方式进行编码----解web层与service层的耦合
        //使用工厂+反射+配置文件
        AdminService service = (AdminService) BeanFactory.getBean("adminService");
-------------------------BeanFactory
public static Object getBean(String id){

        //生产对象---根据清单生产----配置文件----将每一个bean对象的生产的细节配到配置文件中
        //使用dom4j的xml解析技术

        try {
            //1、创建解析器
            SAXReader reader = new SAXReader();
            //2、解析文档---bean.xml在src下
            String path = BeanFactory.class.getClassLoader().getResource("bean.xml").getPath();
            Document doc = reader.read(path);
            //3、获得元素---参数是xpath规则
            Element element = (Element) doc.selectSingleNode("//bean[@id='"+id+"']");
            //<bean id="adminService" class="com.itheima.service.impl.AdminServiceImpl"></bean>
            String className = element.attributeValue("class");
            //com.itheima.service.impl.AdminServiceImpl
            //使用反射创建对象
            Class clazz = Class.forName(className);
            Object object = clazz.newInstance();

            return object;

        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }
  1. <bean id=”multipartResolver”  
  2.         class=”org.springframework.web.multipart.commons.CommonsMultipartResolver” p:defaultEncoding=”utf-8″/>         

菲律宾太阳 5

2
WEB-INF/lib下必加入:commons-fileupload.jar与commons-io-1.4.jar二个文件 
3
表单属性为: enctype=”multipart/form-data” 
工程项目图片如下: 
菲律宾太阳 6
具体代码如下: 
FileUploadBean.java 

Paste_Image.png

Java代码 

菲律宾太阳 7

 菲律宾太阳 8

Paste_Image.png

  1. public class FileUploadBean {     
  2.     private byte[] file;  
  3.   
  4.     public void setFile(byte[] file) {  
  5.         this.file = file;  
  6.     }  
  7.   
  8.     public byte[] getFile() {  
  9.         return file;  
  10.     }  
  11. }  

发表评论

电子邮件地址不会被公开。 必填项已用*标注