问题记录

问题记录

使用Jquery出现的问题

在jsp文件之中,要注意正确使用Jquery的函数,比如$("#id")等函数,如果写成${"#id"},实际上这对于jsp而言是没有语法错误的,那么实际上执行过程之中,会在控制台看到函数不存在的提示。以后碰到这种情况可以考虑是否是js函数语法错误导致的。

<%--
  Author: fighterSu
  Date: 2021/10/16 12:29
--%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%--<script src="webjars/jquery/3.6.0/jquery.min.js"></script>--%>
<html>
    <head>
        <title>JQuery测试</title>
    </head>
    <body onl oad="x()">
        <script type="text/javascript">
            function showTextInfo() {
                alert("点击了单击按钮")
                let a = ${"#text1"};// 这里写错了,应该是()而不是{}
                alert(a.value);
            }

            function x() {
                alert("加载页面!");
            }
        </script>
        <input type="text" id="key" value="测试文本"><br><br>
        <input type="button" value="单击按钮" onclick="showTextInfo()">
    </body>
</html>

问题记录

数据库碰到的问题

  1. 创建存储过程和函数varchar等输入参数都需要带位数限制,不然会报错

  2. 在IDEA里面使用数据库语句,在表前面加上数据库名,就不会报红了,比如查询在数据库su之中的student表的id和name

    select id,name from su.student;
    

Mybatis之中的模糊查询

  • 将%,_包含在参数里面传进来
  • 在mapper文件里面进行设置

mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fightersu.dao.PrimaryStudentDao">
    <select id="selectUseFieldAlias" resultType="com.fightersu.entity.PrimaryStudent">
        select id as stuId, name as stuName, age as stuAge
        from su.student
        where name like #{stuName}
           or age = #{stuAge}
    </select>

    <resultMap id="primaryStudentMap"
               type="com.fightersu.entity.PrimaryStudent">
        <id column="id" property="stuId"/>
        <result column="name" property="stuName"/>
        <result column="age" property="stuAge"/>
    </resultMap>

    <select id="selectUseDiffResultMap" resultMap="primaryStudentMap">
        select id, name, age
        from su.student
        where name like '%${stuName}'
           or age = #{stuAge}
    </select>
</mapper>

测试类

package com.fightersu;

import com.fightersu.dao.PrimaryStudentDao;
import com.fightersu.entity.PrimaryStudent;
import com.fightersu.utils.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

/**
 * @author fighterSu
 * @date 2021/11/1 12:29
 */
public class TestMyBatis {
    @Test
    public void testSolveWithRename() {
        SqlSession session = MyBatisUtil.getSqlSession();
        if (session != null) {
            PrimaryStudentDao dao = session.getMapper(PrimaryStudentDao.class);
            PrimaryStudent stu = new PrimaryStudent();
            stu.setStuName("张丽");
            stu.setStuAge(21);
            List<PrimaryStudent> list = dao.selectUseFieldAlias(stu);
            list.forEach(System.out::println);
        }
    }

    @Test
    public void testSolveWithResultMap() {
        SqlSession session = MyBatisUtil.getSqlSession();
        if (session != null) {
            PrimaryStudentDao dao = session.getMapper(PrimaryStudentDao.class);
            PrimaryStudent stu = new PrimaryStudent();
            stu.setStuName("丽");
            stu.setStuAge(19);
            List<PrimaryStudent> list = dao.selectUseDiffResultMap(stu);
            list.forEach(System.out::println);
        }
    }
}

Spring使用问题

使用util标签时的报错

报错:通配符的匹配很全面,但无法找到元素‘util:list’的声明

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/util
       http://www.springframework.org/schema/util/spring-util-4.0.xsd">
    <!-- 不仅需要添加 xmlns:util,并且在 xsi:schemaLocation 里面添加后面这两个l-->

        <util:list id="studentList">
            <value>王五</value>
            <value>钱六</value>
        </util:list>
</beans>

使用Spring的后置处理器,并使用BeanFactory来创建bean对象,初始化后的方法会执行两次

public class MyBeanPost implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("在初始化之前执行的方法");
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.print(bean);
        System.out.println("在初始化之后执行的方法");
        return bean;
    }
}
\\ 执行结果
\\ top.fightersu.beans.Book@3059cbc在初始化之前执行的方法
\\ 初始化方法
\\ top.fightersu.beans.MyBean@7ea9e1e2在初始化之后执行的方法
\\ top.fightersu.beans.Book@2ed2d9cb在初始化之后执行的方法
\\ top.fightersu.beans.Book@2ed2d9cb
\\ 销毁方法
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <import resource="spring-*.xml"/>
    <bean id="myBean" class="top.fightersu.beans.MyBean" init-method="initMethod"
          destroy-method="destroyMethod">
    </bean>
    <bean id="myBeanPost" class="top.fightersu.beans.MyBeanPost"/>
</beans>

使用工厂bean来创建bean对象时,初始化工厂bean和使用目标bean对象前才会触发postProcessAfterInitialization方法

Tomacat在IDEA之中日志乱码

方案一:

可以通过以下方法解决该中文乱码问题:

打开idea安装目录下bin文件夹下的idea64.exe文件,在最后面添加 “-Dfile.encoding=UTF-8”,如下图所示:

问题记录

解决配置编码为UTF-8后mybatis日志乱码问题

使用本地tomcat

配置运行参数

问题记录

修改tomcat配置文件

以tomcat9为例:

修改tomcat的bin目录下的catalina.bat

set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"
# 在上面这句话修改为下面,即在后面添加了 -Dfile.encoding=UTF-8
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=UTF-8"

这样就不需要每次再设置运行参数了。

若使用的maven来管理的tomcat

需要在pom.xml文件中加入配置信息:

 <configuration>
          <port>8080</port>
          <path>/springMVC_receiveParam_war</path>
          <server>tomcat7</server>
          <uriEncoding>UTF-8</uriEncoding>
 </configuration>
上一篇:数据库:约束


下一篇:第六阶段_typedef关键字详解:创建一个classroom的结构体用来保存一个班级 的信息,所有学生的信息,以及班级人数