题目很基础,但是我还有一半没有回答上
1.Servlet的生命周期和工作原理,阐述Servlet请求中转发和重定向的区别?
(1)实例化。客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,如果没有的话就通过Servlet构造函数创建一个实例。
(2)初始化。调用Servlet的init()方法完成初始化工作,此方法只调用一次。
(3)处理请求。容器调用Servlet的service()方法处理请求,service()方法会根据请求的method属性来决定调用doGet()方法还是doPost()方法完成具体的响应。
(4)销毁。调用Servlet的destroy()方法销毁Servlet实例,此方法只执行一次。
Servlet中的转发:
客户端浏览器的地址栏不会改变,整个转发的过程是同一个请求。整个过程是一个请求,一个响应。转发只能在系统的内部,转发可以传递数据。
重定向:
浏览器地址栏会改变。整个过程是2个请求,2个响应。重定向可以定向到其他的系统。重定向不能使用request域传递对象。
2.springmvc流程和spring事务管理
第一步:用户发起request请求,请求至DispatcherServlet前端控制器
第二步:DispatcherServlet前端控制器请求HandlerMapping处理器映射器查找Handler
DispatcherServlet:前端控制器,相当于中央调度器,各各组件都和前端控制器进行交互,降低了各各组件之间耦合度。
第三步:HandlerMapping处理器映射器,根据url及一些配置规则(xml配置、注解配置)查找Handler,将Handler返回给DispatcherServlet前端控制器
第四步:DispatcherServlet前端控制器调用适配器执行Handler,有了适配器通过适配器去扩展对不同Handler执行方式(比如:原始servlet开发,注解开发)
第五步:适配器执行Handler
Handler是后端控制器,当成模型。
第六步:Handler执行完成返回ModelAndView
ModelAndView:springmvc的一个对象,对Model和view进行封装。
第七步:适配器将ModelAndView返回给DispatcherServlet
第八步:DispatcherServlet调用视图解析器进行视图解析,解析后生成view
视图解析器根据逻辑视图名解析出真正的视图。
View:springmvc视图封装对象,提供了很多view,jsp、freemarker、pdf、excel。。。
第九步:ViewResolver视图解析器给前端控制器返回view
第十步:DispatcherServlet调用view的渲染视图的方法,将模型数据填充到request域 。
第十一步:DispatcherServlet向用户响应结果(jsp页面、json数据。。。。)
spring支持声明式管理事务,支持通过配置文件来进行
3.冒泡排序和二分查找
BubbleSort:从小到大排序,大的放在最右边。
5 2 1 9 6 两个两个进行比较,第一轮,可以把最大的9放在最右边 变成2 1 5 6 9 第一轮的两两比较需要比较4轮(5个数比较4次)
for (int i = 0; i < a.length-1; i++) { // 控制2个相邻位置的交换 第一轮时,就是j=0时候,两辆交换4次,j=1时,两两交换3次
if (a[i] > a[i + 1]) {
int temp = a[i];
a[i] = a[i + 1];
a[i+1] = temp;
}
2 1 5 6 9 接着是比较 这是第二轮,而这一轮,因为最大的已经跑到最右边了,所以只需要,把前4个的最大的放大倒数第二个位置上,这样会比较3次(4个数比较3次)
第三轮,比较2个数,把大的放在最右,2个数比较1次
想这样的操作一共进行了4轮(5个数),每一轮都是同样的步骤,都是两两比较,把大的放在最右边。所以这些代码是重复的,考虑复用代码。每一轮,都会减少一个需要比较的数,即每一轮的最右端的下标会少1.
for (int j= 0; j < a.length-1; j++) { //控制交换的轮数。5个数要交换4轮 length-1个 j=0,1,2,3
for (int i = 0; i < a.length-1-j; i++) { // 控制2个相邻位置的交换 第一轮时,就是j=0时候,两辆交换4次,j=1时,两两交换3次
if (a[i] > a[i + 1]) {
int temp = a[i];
a[i] = a[i + 1];
a[i+1] = temp;
}
}
}
二分查找:
代码:(这样的写法必须是,从小到大进行排序)
//数组的逆序输出
public static int[] reverse(int arr[]){
int arr2[] = new int [arr.length];
for (int i = 0; i < arr.length; i++) {
int value = arr[arr.length-(i+1)];
arr2[i] = value;
}
return arr2;
}
public static void main(String[] args) {
int a[] ={9,7,6,5,3,2};
a= MaxMin.reverse(a);
System.out.println(Arrays.toString(a));
int index = MaxMin.halfSearch(a, 3);
System.out.println(index);
}
7.jsp的9个内置对象
request HttpServletRequest 请求
response HttpServletResponse 响应
session HttpSession 代表着一次会话,直到关闭浏览器结束会话。
pageContext pageContext 获得其他8个对象
application ServletContext 域对象
config 配置
out JspWriter 输出
exception
page 当前jsp页面
前天写完了,好像没保存,结果全没了,后面有时间在写上---------