问题记录
使用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>
数据库碰到的问题
-
创建存储过程和函数varchar等输入参数都需要带位数限制,不然会报错
-
在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>