Servlet的生命周期

初始化:Web容器加载servlet,调用innit(),只执行一次

处理业务: 请求到达时,运行service方法 并调用相应的doget或者dopost方法.  可执行多次

销毁:业务结束,web容器会调用servlet的destroy()销毁servlet   只执行一次

2.get和post提交

Get提交在url后拼接参数, 用户可以看到参数因此不安全. Post提交将参数放入请求体中因此是安全的

Get提交一般只提交文本,大小为1024kb post提交可以提交任何文件. 所以一般上传文件用post提交.

3.jsp和servlet有什么区别

Jsp本质是servlet  请求到达时先将jsp编译成servlet  jsp和servlet的区别在于 servlet完全是java代码 脱离了html  而jsp是java代码和html的组合.  Jsp更注重视图的显示,servlet更注重业务逻辑的控制.

4.doget和dopost的参数是

5.Httpservletrequest response

6.Jsp 9大内置对象

Request  客户端的请求

Response  向客户端响应的信息

Out 向页面输出内容

Exception 异常的显示

Page  页面本身

Pagecontext 页面的配置

Config   服务器的配置

Application  服务器关闭前用于不同用户间的共享信息

Session 与请求有关的会话期

  1. 动态include <jsp标签> 检测包含内容的改变 可以携带参数   用于动态页面 静态include不可以检测包含内容的改变

<jsp动态标签用于> 电商项目提取页头和页脚 因为 页头和页脚在许多页面都包含

9Forward 和redirect 的区别

Forward 代表请求转发, 服务器直接访问目标url,  将获取的内容传递给浏览器, 浏览器 不知道是从哪里传来的内容所以 url不改变.  Redirect 发送一个状态吗. 并告诉浏览器去请求那个ulr  所以跳转新的url

Forward  在各请求页面可以获取request里面的数据

Redirect不可以

Forward 一般用于项目的登录后 根据角色转发到不同的页面

Redirect  用于项目的注销后跳转到主页 或者其他网站

用于项目增删改之后 跳转到查询所有的action

Forward 速度快  redirect 速度慢

  1. Jsp:inculude  包含页面
  2. Jsp:forward  转发到页面
  3. Jsp:plugen  用于标记
  4. Jsp: userbean 用于创建javaBean
  5. Jsp: setproperty 设置属性
  6. 获取属性
  7. Jsp的3种跳转方式

Jsp:forward 跳转

Response.redirect()

13.获取页面元素值有几种方式

7.Request.getparameter()

8.几种方式将页面的值传递到后台

Form表单的post请求 也可以通过setatrribute()方法

29传递参数到后台有几种方式

表单传参,url传参 ,ajax传参, JQuery

21.Jsp乱码是如何解决的

web.xml通过过滤器完成.

Jsp页面乱码<page  contexttype  charset=>

表单提交乱码

request.setcharsetEncodeing()

监听器:  相当于一个程序 他监听另一个程序的方法和属性.

拦截器:面向切面编程  在service中 在执行业务逻辑方法前 例如将各个方法的重复代码提取 在执行 业务逻辑方法前 执行@before 中的代码 用到了代码的重用性的特点.

在业务逻辑方法后执行 打印字符串的操作

在方法出现异常时执行  打印一句话提示.

过滤器: 在请求到达servlet之前  对请求的url过滤违法的url,或者通过过滤进行统一编码

拦截器与过滤器的区别

过滤器只作用在

执行顺序: 过滤器>拦截前>action处理>拦截后>过滤后

在经过过滤器过滤掉违法的url  并进行统一的编码

经过拦截器执行 将检查用户提交数据的的验证.

8.springMvc工作流程.

9.请求的开始来源用户访问的url,之后springmvc工作正式开始. 好比一个人进城,需要经过城门,城门就相当于dispatcherserlvet 的前端控制器

进入城后,我要找工作地点(请求需要工作),但是我不认识路(请求在哪里分析) 所以我要先找到地图,然后在地图上找到工作地点  springmvc中 dispatcher servlet开始率先找到 handlerMapper 它映射找到工作的老板 handler Adapter

老板指示我工作 此时我化身为员工 handler 也就是请求所对应的事件,工作的内容就是请求下对应的方法. 我们提交工作数据呈现给老板看(返回modelandView)给handleradapter

之后老板把工作数据贴在城门(将modelandViea 返回给dispatcherservlet)上供来往的商人(用户)看

2.post请求中文乱码问题

在web.xml设置过滤器

Request.getparameter(‘username’).getbyte(utf-8,)

Springmvc 和Struts的区别

Springmvc入口是方法 Struts 入口是 fiter

Springmvc 基于方法开发的 传递参数通过形参,可以设计成单例或者多例

Struts 基于类开发 传递参数通过属性传递, 只可以设计成多例的

Struts 采用值栈的方式请求和响应数据, 通过OGNL存取在页面<S:property>, springmvc 方法间独立的, 独享请求和响应参数, 请求通过数据通过参数获取, 通过modelmap返回结果数据.

Struts针对每个请求封装成map 供action使用 保证了线程的安全性,但是在并发量大的时候 创建了较多的Action 大量占用资源,. 并发量大的时候考虑用Springmvc代替Struts

Springmvc继承ajax  使用方便 只需要一个@requestBody注解 返回结果即可.

Struts 的拦截器继承了ajax在action中配置必须通过插件,或者代码集成进去,使用起来相对不便.

Springmvc可以认为100%零配置

如何处理servlet的线程不安全问题

线程安全就是多线程操作同一个对象不会有问题,线程同步一般来保护线程安全,所以在servlet的线程里面加上同步方法或者同步块,可以保证在同一时间只有一个线程访问.

拦截器与过滤器的区别:
拦截器是基于java的反射机制的,而过滤器是基于函数回调。
拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

执行顺序:过滤前 – 拦截前 – Action处理 – 拦截后 – 过滤后。个人认为过滤是一个横向的过程,首先把客户端提交的内容进行过滤(例如未登录用户不能访问内部页面的处理);过滤通过后,拦截器将检查用户提交数据的验证,做一些前期的数据处理,接着把处理后的数据发给对应的Action;Action处理完成返回后,拦截器还可以做其他过程(还没想到要做啥),再向上返回到过滤器的后续操作。

Springmvc的工作流程

10.请求的开始来源用户访问的url,之后springmvc工作正式开始. 好比一个人进城,需要经过城门,城门就相当于dispatcherserlvet 的前端控制器

进入城后,我要找工作地点(请求需要工作),但是我不认识路(请求在哪里分析) 所以我要先找到地图,然后在地图上找到工作地点  springmvc中 dispatcher servlet开始率先找到 handlerMapper 它映射找到工作的老板 handler Adapter

老板指示我工作 此时我化身为员工 handler 也就是请求所对应的事件,工作的内容就是请求下对应的方法. 我们提交工作数据呈现给老板看(返回modelandView)给handleradapter

之后老板把工作数据贴在城门(将modelandViea 返回给dispatcherservlet)上供来往的商人(用户)看

05-17 17:38