zoukankan      html  css  js  c++  java
  • 和java有关的小问题

    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 或更高版本。
    

    解决办法

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <port>8888</port>
                    </configuration>
                </plugin>
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <target>1.8</target>
                        <source>1.8</source>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
    
            </plugins>
        </build>
    

    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>(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由于他的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,

     <!--在build中配置resources,来防止我们资源导出失败的问题-->
        <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
        </build>
    
    默认为false
    <!--其中最重要的是<filtering>true</filtering>这段,
        这个配置的意思是过滤上面指定属性文件中的占位符,占位符是${变量名称}这样的形式,maven会自动读取配置文件,然后解析其中的占位符,使用上面pom文件中定义的属性进行替换-->
    
    
    每个人都是在努力的路上,别因为别人的误解而放弃,,术业有专攻,如是而已。
  • 相关阅读:
    阿里P8聊并发编程:线程中断和终止
    浅谈Java中的锁:Synchronized、重入锁、读写锁
    史上最全Java面试题!进程,线程相关部分下篇(带全部答案)
    @史上最全Java面试题!关于volatile关键字篇(带全部答案)
    @史上最全Java面试题!进程,线程相关部分上篇(带全部答案)
    一道号称“史上最难”java面试题引发的线程安全思考,掌握了吗?
    stopWatch
    mysql语句及执行计划
    Awr
    文件下载
  • 原文地址:https://www.cnblogs.com/16699qq/p/13571254.html
Copyright © 2011-2022 走看看