学习笔记整理


List集合的三种遍历删除:
1.普通for循环,可以删除,但是索引要–。这种情况是当两个相同的元素挨着的时候,判断完第一个,索引向后移动会把下面需要判断的一个漏掉。
2.迭代器,可以删除,但是必须使用迭代器自身的remove方法,否则会出现并发修改异常。
3.增强for不能删除。

所谓的web应用,就是一个目录,其中包含很多大的web资源html等。
webapps下不能直接放资源,要放文件目录,相当于一个web应用。
在Tomcat中有虚拟主机,名为localhost;
可以将一个web应用打成zip包,然后改为一个war包。直接目录里面压缩,然后添加到压缩文件,完成将后缀改为.war。
不要和已有的web目录的文件名相同,否则不能自动解压。
放到Webapps下会自动减压。不要有中文的文件名,将来可能无法自动解压。

url-pattern中配置的斜杠(/)表示将除了JSP以外的其他请求都拦截下来,交给spring的前端控制器来处理。
但是这样配置,会将对静态资源的访问也拦截下来,导致访问静态资源时,出现404(资源找不到),因为spring的前端控制器将对静态资源的访问也当成了一个controller请求,去配置对应的映射路径,这当然找不到。

// 这里如果用的是类路径和包扫描的方式,映射文件Mapper.xml必须和接口放在同一个目录下。如果是resource的话可以不在同一个目录下。

400错误是因为前段页面格式存在错误造成的。

Server server = t.getServer();
// 还可以通过设置断点的来得到具体的实现类
System.out.println(server.getClass()); // 怎么知道一个接口的具体实现的类型,可以通过接口对象的getClass()方法,的到具体的实现类StandardServer。

说明:@Bean注解要配合@Configuration注解使用,@Configuration用于描述类.

Spring MVC请求处理主要从如下几个方面进行考虑:

  1. 请求路径(普通方式,rest方式) :404
  2. 请求方式(Get请求,Post请求,…):405
  3. 请求参数(直接量,POJO对象,MAP对象):400

ip地址的最后一个部分是端口号。1.打开cmd命令窗口,输入如下指令可以查看所有端口和PID。 netstat -ano
2.找到对应的端口对应的PID查看进程: tasklist|findstr “2323”
3.杀死进程:taskkill /f /t /im java.exe

this关键字,谁来调用我这个方法,我就代表谁。

前端传过来的参数名称必须和服务端接收的参数名称完全相同。不相同的话就不能对应上值。

resource->static这个文件下的内容放的是css,js,image等静态资源,也可以放html

  • resource->templates这个文件夹下放的是具体的页面,浏览器不能直接访问,必须通过页面转发跳转等才可以访问。

dao接口这一层可以使用@Mapper来扫描,也可以在启动扫描层添加@MapperScan(dao接口包)。

自定义异常一般实现runtimeExcepton就行,如果直接继承Exception,这个编译时异常要一直处理抛出,麻烦。

多表关系查询一般使用一张中间表来产生关系。
查询上级目录可以采用自关联查询。

使用左连接,把为null也显示出来 查询所有菜单以及菜单对应的上级菜单信息。左边表中为null的值。

sql异常错误一定要检查sql语句写的是否符合语法规范。接口命名空间当中不要有空格。字段要和数据库的字段保持一致。

断点调试的时候,如果进入了不想进入的方法,可以在接下来执行的操作方法中加一个断点,然后直接跳到这个断点。也可以前后端一起进行debugger

useGeneratedKeys=“true”
keyProperty=“id”>

一对多的查询,关系一般放到多的一方。

resultMap type=“com.cy.pj.sys.vo.SysUserDeptVo”
id=“sysUserDeptVo”>



当设计到多个表关联查询的时候,结果要封装到一个vo类当中。用来保存数据。

事务要放到业务层。

int getCount(); 查询总记录数胡mapper.xml的时候必须写返回结果resultType=“int”。

当有多个关联查询胡时候,可以多张表一起查,通过起别名然后通过where来判断id相等。where e.id=j.id AND e.dept_id= d.id;

对象转换为json的时候,必须调用对象的get方法

  • json串转换为对象的时候,调用对象的set方法
  • set和get方法必须成对出现。则json转化正确。如果特殊情况可以加@JsonIgnoreProperties(ignoreUnknown=true) //表示JSON转化时忽略未知属性。

对maven执行操作的时候,可以执行强制更新。这样就可以防止进度条不加载的问题。

使用result风格,就是通过路径来拼接参数。获取的时候路径/{model}/{num}等用{}包裹起来。参数获取时记得前面要加@Pathvarible注解。
可以通过request来获取cookie,然后通过response来添加cookie。
还可以request来获取用户的ip地址。
参数可以做一个非空判断,防止空指针异常。

开始一个项目,首先是导入环境。pom.xml当中的文件要进行依赖导入。如果是一个服务器需要启动就要添加打包的插件。还要添加公共的依赖。
首先是建立一个与表一一对应的pojo,然会写Mapper。Service。等。
“/”springmvc可以进行自动添加。

@Configuration // 表示这是一个配置类 这就相当于web.xml
public class MvcConfigurer implements WebMvcConfigurer{
/**
* 添加用户的拦截器,表示拦截器生效
* url:localhost:8090/addUser/a/b
* /** 表示拦截所有(多级)的请求
* /* 表示拦截一级目录请求
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(userInterceptor).addPathPatterns(“/cart/“,”/order/”);
}

/**

  • 定义拦截器 拦截器需要重点学习,必须配合重定向使用。
  • 继承一个拦截器的接口HandlerInterceptor
  • 拦截器配置以后才起作用,光写不起作用
  • @author TEDU

*/
@Component // 表示交给spring容器管理
public class UserInterFaceptor implements HandlerInterceptor {
boolean:true放行 false拦截,必须配合重定向使用。

springmvc定义拦截器需要实现一个接口HandlerInterceptor ,重写里面的方法,有三个方法,分别是前增强/后增强/封装完结果页面增强。handler处理器就相当于执行三层当中的方法。


/**

  • 使用ThreadLocal来共享数据,将数据保存到当前的线程当中
  • @author TEDU

*/
public class UserThreadLocal {
// 如果存储多个数据的 时候使用Map集合ThreadLocal<Map<key,value>>
private static ThreadLocal thread = new ThreadLocal<>();

public static void setUser(User user) {
	thread.set(user);
}

public static User getUser() {
	return thread.get();
}

// 防止内存溢出,必须添加移除的方法
public static void remove() {
	thread.remove();
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值