- springMVC跳转问题
- 页面跳转500页面问题
- SpringMVC与mybatis整合问题
- mybatis 扫描mapperxml文件问题
- mybatis下面在包下面的xml文件不被编译
- 上传图片自定义样式后无法上传图片问题
- 在idea中如果你遇到HttpServletRequest无法导入的情况
- 加载properties配置文件时遇到的问题
- 使用idea编译项目的时候遇到错误 程序包javaxservlet不存在
- 使用mybatis-generator生成的mappper 向数据库插入数据时始终无法插入并控制台报错
- orgapacheibatisbindingBindingException Invalid bound statement comUserMapper
- 数据库插入中文显示
- Spring的注入问题
- MybatisGenerator生成的代码提示已经存在
- BootstrapUtil错误
- HTTP Status 500 - Servletinit for servlet mvc-dispatcher threw exception
springMVC跳转问题
这几天用springMVC,配置好了,就是不能跳到WEB-INF下面的jsp,回去仔细看了配置文件发现。
- 之前:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
- 改正之后:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
//此处决定你到底跳转的路径
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>
被自己蠢哭了有木有。
页面跳转500页面问题
- 访问jsp有的可以访问,有的直接跳转500,感觉路径没有一点问题,由于这几天刚整合了shiro,还以为是shiro的问题,搞得我把shiro官方文档看了一遍,问题没解决,shiro倒是会用了,真的是醉了,无意间发现了问题,是因为页面jsp引入的js或者css的问题,${contextPath}写成了#{contextPath},导致页面出错,才跳转的500,由于web.xml里面配置了500错误跳转的页面。
- 之前:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
</web-app>
- 修改之后:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
<!--
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
-->
</web-app>
先注释掉500的错误跳转页面,正式环境上在打开注释
SpringMVC与mybatis整合问题
- NoClassDefFoundError: org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy
缺少: ‘org.springframework:spring-jdbc:4.2.4.RELEASE’,
- java.lang.NoClassDefFoundError: org/springframework/dao/DataAccessException
缺少:’org.springframework:spring-tx:4.2.4.RELEASE’,(就是spring-transaction)
mybatis 扫描mapper.xml文件问题
- 一直提示无法找到mapper文件夹中的xml文件,can’t create bean …
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!--自动扫描mapping.xml文件-->
<property name="mapperLocations" value="classpath:com/ttc/dao/mapper/*.xml"></property>
</bean>
改正之后:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!--自动扫描mapping.xml文件-->
<--就因为classpath后面要跟一个*-->
<property name="mapperLocations" value="classpath*:com/ttc/dao/mapper/*.xml"></property>
</bean>
mybatis下面在包下面的xml文件不被编译
上传图片自定义样式后无法上传图片问题
<input class="real_file" type="file" name="upload" accept="image/*" capture="camera" onchange="uploadPicture('imgCUpload')" style="display: none" id="imgC"/>
<div class="upload" onclick="triggerInputClick('imgC')">
<img id="up_img3" src="${contextPath}/images/epaylink/upload_ico.png"/>
</div>
js文件:
/**
* 选择图片后直接上传图片
*/
function uploadPicture(imgId) {
$("#" + imgId).click();
}
上传图片的οnchange=”uploadPicture(‘imgUpload’)”方法要写在html页面的表单域里面,不然没有效果。
在idea中如果你遇到HttpServletRequest无法导入的情况
@RequestMapping(value="/imageUpload",method = RequestMethod.POST)
public void springUpload(HttpServletRequest request) {
// TODO
}
这种情况是因为你没有导入Applycation Servlet Library,将其添加到项目中就可以了
加载properties配置文件时遇到的问题
修改前:
prop = new Properties();
InputStream is = null;
try {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
is = classLoader.getResourceAsStream("resources/" + fileName);
if (is != null) {
prop.load(is);
}
修改后:
prop = new Properties();
InputStream is = null;
try {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
is = classLoader.getResourceAsStream(fileName);
if (is != null) {
prop.load(is);
}
就因为我在前面加了一个/resources,结果就无法加载。
使用idea编译项目的时候遇到错误: 程序包javax.servlet不存在
原因是没有servlet-api这个包,我使用的是gradle。
dependencies {
compile(
'javax.servlet:javax.servlet-api:3.1.0'
)
}
在build.gradle中加入这句话就可以了。
使用mybatis-generator生成的mappper, 向数据库插入数据时,始终无法插入,并控制台报错。
java.lang.IllegalArgumentException: Result Maps collection already contains value for com.ttc.dao.PermissionMapper.BaseResultMap
百思不得其解,因为我用的是mybatis-generator,使用代码对比工具,发现生成的PetMapper.xml多了几百行!!!
原来是我在运行时没有把之前已经生成的userMapper.xml删除掉,再次生成代码时,又附加了上去!所以在运行代码生成之前,要把以前已经生成的xml文件清掉,以妨出错。
org.apache.ibatis.binding.BindingException: Invalid bound statement (com.*.*.UserMapper)
今天使用mybatis-generator生成的mapper不满足要求,增加了一个方法然后就一直报绑定错误的问题
@Resource
ArticleTypeMapper articleTypeMapper;
还一直有一行的波浪线说是无法注入,我就奇怪了重头检查了一边没有发现问题,最后我就去build(编译后的文件夹)去看了一下,里面的mapper.xml竟然没有更新。还是gradle没有用熟啊,又手动去刷新了一下,运行通过。
数据库插入中文显示????
id | 用户名 | 文章 |
---|---|---|
1 | ??? | BLOG |
2 | benny??? | BLOG |
mysql的my.ini文件已经都改成utf8了,最后找到问题是因为:
jdbc.url=jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=utf8
Spring的注入问题
- 正常情况下:
@Autowired
@Qualifier(value = "ECPSysArgsServiceImpl")
private ECPISysArgsService sysArgsServiceImpl;
现在想要写一个公用的类,于是就要写成static了,如果直接
@Autowired
@Qualifier(value = “ECPSysArgsServiceImpl”)
private static ECPISysArgsService sysArgsServiceImpl;这样是无法注入的,所以要采用构造器注入。
private static ECPISysArgsService sysArgsServiceImpl;
@Autowired
public ArgsUtil(ECPISysArgsService sysArgsServiceImpl){
ArgsUtil.sysArgsServiceImpl = sysArgsServiceImpl;
}
完整代码如下:
@Service
@Lazy(false)
public class ArgsUtil {
private static ECPISysArgsService sysArgsServiceImpl;
@Autowired
public ArgsUtil(ECPISysArgsService sysArgsServiceImpl){
ArgsUtil.sysArgsServiceImpl = sysArgsServiceImpl;
}
public static String ADDR_ARGS = "";
public static String DEFAULT_ADDR = "http://192.168.5.77:8080";
/**
* @return java.lang.String
* @author benny
* @date 2016/4/22
* @method getArgs
* @version V1.0.0
* @description 获取系统管网地址 如果从缓存中读取不到直接返回管网地址
*/
public static String getArgs() {
try {
ADDR_ARGS = sysArgsServiceImpl.getSysMap(Constants.SYS_IHUI_ADDR).getResult();
} catch (Exception e) {
e.printStackTrace();
}
if (StringUtils.isBlank(ADDR_ARGS)) return DEFAULT_ADDR;
return ADDR_ARGS;
}
}
写完发现还是注入失败,晕死,原来是忘记在类上加上注解@SERVICE
MybatisGenerator生成的代码提示*已经存在
Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [E:\hellofdssd\ttc-blog\build\classes\artifacts\ttc-core\exploded\ttc-core-1.0-SNAPSHOT.war\WEB-INF\classes\mapper\ArticleMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.ttc.dao.ArticleMapper.BaseResultMap
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:468)
at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:343)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 108 more
原因很明显,也很尴尬,生成的代码我没有删除直接又执行了一次,于是就在上一次的代码之上,又生成了一次,所以报代码重复问题
BootstrapUtil…..错误
java.lang.IllegalStateException: Could not load CacheAwareContextLoaderDelegate [class org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate]
at org.springframework.test.context.BootstrapUtils.createCacheAwareContextLoaderDelegate(BootstrapUtils.java:101)
at org.springframework.test.context.BootstrapUtils.createBootstrapContext(BootstrapUtils.java:70)
at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:105)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:152)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:143)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:36)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:98)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
Caused by: java.lang.NoSuchMethodError: org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;
at org.springframework.test.context.BootstrapUtils.createCacheAwareContextLoaderDelegate(BootstrapUtils.java:98)
... 19 more
原因是在jar包中,发现多了一个spring2.5.3的jar包,导致jar包冲突,源码报错,beanutil有两个一个4.2.4的一个4.2.5的所以提示错误。
HTTP Status 500 - Servlet.init() for servlet mvc-dispatcher threw exception
Servlet.init() for servlet MyDispatcherServlet threw exception
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet.init() for servlet MyDispatcherServlet threw exception
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1813)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
java.lang.Thread.run(Thread.java:722)
root cause
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [C:\ItDevelop\Tomcat7\webapps\Spring-MVC-0.0.1-SNAPSHOT\WEB-INF\classes\controller\MyController.class]; nested exception is java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class
org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:281)
org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:242)
org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentS
原因我已经不想多说什么了,因为是自己新建的WEB-INF文件夹,但是他是一个黄色的空文件夹,也就是说他不是 资源文件夹
右键WEB-INF,make directory AS RESOURCE DIRECTORY
I guess the problem is with the notices-servlet.xml file. Check the "WEB-INF" folder for the ServletContext resource. Try again running the project after putting the notices-servlet.xml in the "WEB-INF" folder. Hope that will do!
利用ajax提交表单被浏览器拦截修改问题
var subSucc = false;
$.ajax({
url : basePath + url,
type : "post",
dataType : "json",
async : false, //此处是重点 不然异步执行会先执行下面的表单提交
success : function (data) {
subSucc = true;
},
error : function () {
submitMessage("网络异常请稍后再试", "error");
},
beforeSend: function () {
}
});
if (subSucc) {
$("#goPay").submit();
}