javaweb实训第四天下午——员工管理系统-JSP&Servlet&JDBC综合练习-CRUD
目录1.课程介绍2.Servlet细节2.1.多种匹配方式2.1.1.精确匹配(配置多个请求)2.1.2.通配符匹配(/*)2.1.3.后缀匹配(*.后缀名)2.2.初始化配置2.3.默认页面2.4.线程安全2.5.合并多个Servlet3.员工信息相关CRUD4.部门信息相关CRUD5.课程总结5.1.重点5.2.难点5.3.如何掌握5.4.排错技巧6.常见问题7.课后练习8.面试题9.扩展知识
目录
1.课程介绍
- Servlet细节; (掌握)
- 员工信息相关的CRUD; (掌握)
- 部门信息相关的CRUD; (掌握)
2.Servlet细节
2.1.多种匹配方式
2.1.1.精确匹配(配置多个请求)
1.精确匹配:配置什么就必须写什么,精确匹配中/千万不能少;
2.在一个servlet-mapping中配置多个;
3.在多个servlet-mapping中配置配置多个servlet-mapping;
注:相对应的注解形式:
@WebServlet(urlPatterns={"/mapping","/mapping2","/mapping3"})
2.1.2.通配符匹配(/*)
1.通配符匹配:可以拦截到所有的请求:
2.例如:/system/、/system/user/。很多时候,我们做权限,就会用到这个拦截:
注:相对应的注解形式:@WebServlet(urlPatterns={"/system/user/*"})
2.1.3.后缀匹配(*.后缀名)
1.后缀匹配:以后缀的方式匹配,注意后缀匹配是没有加/的;
2.例如:.action、.do、.user、.student、*.admin等等;
注:相对应的注解形式:@WebServlet(urlPatterns={".xxx"})
提别提醒:后缀匹配中不要配置.html和*.jsp后缀(与页面的后缀冲突),后缀请求匹配会先匹配web.xml或注解直接找到Servlet,而不会请求你的html和jsp页面;
2.2.初始化配置
1.为了提高第一次访问Servlet的效率,可以将Servlet实例化初始化的时机提前到项目部署的时候,只需要加上即可:
2.load-on-startup这里面的数字代表就是servlet创建的先后顺序。 数字越小,越早启动;
3.中不要取default,jsp。默认的default就是访问静态资源,如果我们使用default会把别人的功能覆盖掉;
2.3.默认页面
1.我们之前在学习的时候,我们有一个默认页面的概念:
2.上面三个都是默认页面。 万一我三个都有呢?
(1)先找第一个
(2)第一个找到了,使用第一个
(3)第一个没找到,再去找第二个
(4)……
3.可以自己修改默认配置页面(注意在自己web.xml进行修改):
2.4.线程安全
1.Servlet是单例的(同一个线程发送多次请求,只会创建一个对象)。但是Servlet是线程不安全的,不要使用成员变量,演示一下线程安全问题:
2.当同时访问的时候,出现线程安全问题。出现线程安全的原因:num1 和num2 只声明了一次,以后都在使用这个num1和num2;
3.我们怎么来解决线程安全问题呢:
第一种解决:实现SingleThreadModel接口(已经过时)
出现问题:SingleThreadModel相当于一个把锁,必须等第一个人计算完,之后其他人才进来;这样导致效率很低下;
第二种解决:不要写成员变量:
图示:
注意:Servlet和Springmvc都是非线程安全的(不要写成员变量)。Struts2 : 线程安全的(它是可以写成员变量的);
2.5.合并多个Servlet
1.如果涉及到一个表中有多个请求(CRUD等),那么我们需要写多个Servlet吗?
(1)答案是不行,因为这样重复代码太多;
(2)代码整体不够简洁,美观,显得臃肿;
(3)不方便管理和维护;
2.可以将同一个表的请求写在一个Servlet中(前后台需要分开)
3.如何实现多个Servlet合并?
(1)第一种:使用后缀匹配*.表名实现,后台判断请求的uri区分不同的请求,调用不同的方法处理;
(2)第二种:在表单中使用隐藏域,每个请求写不同的值,后台获取这个隐藏域参数之后再判断,然后调用不同的方法处理;
3.员工信息相关CRUD
4.部门信息相关CRUD
5.课程总结
5.1.重点
1.三层架构理解;
2.项目结构搭建;
3.页面的导入;
4.项目环境搭建;
5.如何编写一个功能;
6.员工信息的CRUD操作;
5.2.难点
1.三层架构理解;
2.项目结构搭建;
3.页面的导入;
4.项目环境搭建;
5.如何编写一个功能;
6.员工信息的CRUD操作;
5.3.如何掌握
课上认真听课;
2.完成课后练习;
3.抓住课程重点;
4.掌握一个功能的执行流程;
5.将模块功能化,功能层次化,一层一层的写代码;
5.4.排错技巧
1.通过异常和错误找出问题,分析问题,解决问题;
2.分层排除错误;
6.常见问题
7.课后练习
1.课堂代码1-2遍;
8.面试题
1.简述什么是三层架构? (预计5分钟完成)
2.Servlet是不是单例的?线程安全吗? (预计2分钟完成)
3.Servlet中能否定义成员变量? (预计5分钟完成)
9.扩展知识或课外阅读推荐(可选)
9.1.扩展知识
9.2.课外阅读
更多推荐
所有评论(0)