1.MySql数据库表插入中文数据的时候,显示❓
前提:1.已经正确设置数据库的编码格式utf8
2.能连接数据库
3.sql语句没有问题
解决办法:
如果使用template.update方式,在url后面添加上数据库的默认编码格式 url=jdbc:mysql://localhost:3306/day17?characterEncoding=utf8
2maven项目启动过程中的错误
报错提示
错误关键代码
javax.servlet.ServletException: Class com.itcsl.servlet.MyServlet is not a Servlet
解决办法:
报错提示
不再支持源选项 5。请使用 7 或更高版本。
不再支持目标选项 5。请使用 7 或更高版本。
解决办法
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
8888
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
UTF-8
3.控制台报错:Property 'dataSource' is required
解决方案:
java.lang.IllegalArgumentException: Property ‘dataSource’ is required 说的是DataSource是必须的
在dao使用的时候dataSource是空的.
检查JdbcUtils工具类 ,发现使用类加载器加载druid.properties文件,那么使用类加载器的话因为本身就是从classpath下获取.所以不需要加 /
4.控制台报错:org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
解决方案:
错误信息
org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
at org.springframework.dao.support.DataAccessUtils.requiredSingleResult(DataAccessUtils.java:71)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:812)
方案
queryForObject无记录时会抛出异常,而对于query()list的类型不会抛出此异常。解决方法就是捕获这个异常然后在catch中返回null就可以。修改代码如下:
@Override
public User findByUsername(String username) {
User user=null;
try{
//1.定义sql
String sql="select * from tab_user where username= ?";
//2.执行sql
user= template.queryForObject(sql, new BeanPropertyRowMapper(User.class), username);
}catch (Exception e){
return null;
}
}
5.java.lang.NoSuchMethodException
没有这样的方法
问题
java.lang.NoSuchMethodException: cn.itcast.travel.web.servlet.UserServlet.add(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
at java.base/java.lang.Class.getMethod(Class.java:2113)
at cn.itcast.travel.web.servlet.BaseServlet.service(BaseServlet.java:31)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at cn.itcast.travel.web.filter.CharchaterFilter.doFilter(CharchaterFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:835)
请求的路径/travel//user/find
方法名称find
cn.itcast.travel.web.servlet.UserServlet@304b3938
java.lang.NoSuchMethodException: cn.itcast.travel.web.servlet.UserServlet.find(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
at java.base/java.lang.Class.getMethod(Class.java:2113)
at cn.itcast.travel.web.servlet.BaseServlet.service(BaseServlet.java:31)
解决方案1
解决方案2
更改方法的修饰符为public
public void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("UserServlet的add方法....");
}
public void find(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("UserServlet的find方法....");
}
6.Idea控制台中文乱码解决:-Dfile.encoding=gb2312
7.解决tomcat7中的中文参数乱码
rname=new String(rname.getBytes("iso-8859-1"),"utf-8");
8.IntelliJ idea设置单行行首注释去掉多余空格
问题:java代码使用快捷键"ctrl+/"添加行注释时,发现出现多余空格:
解决:
打开idea:file>settings>Editor>code style>java>勾选use tab character
表示tab缩进不使用空格而使用制表符,如果使用空格就会出现上述多余空格问题。
最后,格式化下代码:"ctrl+alt+L"
问题:
解决办法:
问题:
解决办法:
9maven由于他的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,
src/main/java
**/*.xml
**/*.properties
false
src/main/resources
**/*.xml
**/*.properties
false
默认为false