java-web

  1. J2EE相关

    1. Servlet的生命周期

      在web容器中,客户端请求servlet包含四个阶段

      1.加载Servlet   创建Servlet实例 基类Httpservlet.class
      
      2.初始化Servlet init()
      
      3.处理服务 service()
      
      4.销毁 servlet长时间不适用或者servlet申请关闭
      复制代码
    2. Servlet请求流程

      1. 浏览器发起请求 80:/**1/**2

      2. 服务器解析url

      3. 解析tomcat根目录的/config/server.xml 中**1,获得项目实际路径,

        找不到404

      4. 实际路径/WEB-INF/web.xml的url-pattern中找**2,并拿取Servlet全限定类名com.bat.*

        找不到404

      5. Servlet实例缓存池查com.bat.*

      6. 如果对象不存在,反射创建,并加入缓冲池

      obj=Class.forName("com.bat.*").newInstance()

      cache.put("com.bat.*",obj)

      obj.init()

      obj.service(req,resp)

      1. Servlet是单例的,创建后驻留内存不会自行销毁,除非服务器关闭

      2. get和post区别

        get安全系数相对低,参数直接暴露地址栏,请求信息不能超过1kb post相对安全,可上传图片,信息大小不限制

      3. tomcat乱码问题如何解决

        1. 用iSo-8859-1解码乱码数据,再用utf-8编码,数据多的时候,太繁琐,损耗性能

        2. post请求 setCharacterEncoding("utf-8")

          get请求,修改server.xml URIEncoding="UTF-8"

      4. forward和redirect

        forward:

        用法: request.getRequestDispatcher(path).forward(req,reps)

        1.单Servlet,单请求地址栏地址不改变
        
        2.getAttribute() setAttribute()共享资源
        
        3.可访问WEB-INF下资源
        
        4.不能跨域访问[域名 协议 端口] 
        复制代码

        redirect:

        用法:
            request.sendRedirect(String location)
            
        1.地址改变,
        
        2.两个请求,
        
        3.两个Servlet,
        
        4.不能访问WEB_INF,
        
        5.能跨域
        复制代码
      5. JSP原理

        浏览器访问JSP,tomcat的JSP引擎会翻译成Servlet,编译Class文件,容器装载Servlet程序

      6. 静态包含和动态包含

      <%@include file="被静态包含的页面的路径"%>
      JSP被翻译时候合并,合成一个class
      <jsp:include page="被动态包含页面的路径"></jsp:include>
      运行时候合并,两个class
      复制代码
      1. JSP九大内置对象

        request 一次get/post请求

        response 一次响应

        pageContext 当前JSP

        session 一次会话

        application 当前应用

        out 输出流

        config jsp配置

        page 当前页面

        exception 异常

      2. JSTL 是JSP标准标签库

      3. cookie和session

        1.cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

        2.session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

        3、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

        4、可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。

      4. Servlet的filter

        作用:

        1.请求资源前设置编码
        2.登陆校验
        3.参数校验过滤
        4.数据压缩,加密,转换
        复制代码
      5. 为什么使用MVC三层架构

        答: 请求到后端Controller,调用Model逻辑,View生产JSP,动态输出HTML,最后返回浏览器,将模模块松耦合,各自完成功能.提高代码可读性和可维护性

    Spring框架

  1. Spring中Bean作用域

// XML 中设置作用域 <0bean id="" class="" scope="prototype" />

// 使用注解设置作用域 @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

 singleton   

 prototype

 request

 session 

 globalsession 单点登录
复制代码
  1. MVC请求流程详解

第一步来到DispatcherServlet其实就是阻断筛选请求到spring MVC

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <!-- 拦截所有的请求 -->
    <url-pattern>/</url-pattern>
</servlet-mapping>
复制代码

第二步来到处理器映射器,也就是挑选controller

<bean id="simpleUrlHandlerMapping"
      class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <!-- /hello 路径的请求交给 id 为 helloController 的控制器处理-->
            <prop key="/hello">helloController</prop>
        </props>
    </property>
</bean>
<bean id="helloController" class="controller.HelloController"></bean>
复制代码

第三步来到处理器适配器 并拿到数据

第四步数据一般发送到视图jsp,逻辑jsp名和数据返回给DispatcherServlet

第五步,由视图解析器匹配特定视图,可能是jsp可能其他

第六步,视图渲染,html通过DispatcherServelt返回前台客户端

  1. MyBatis的占位符 # $区别 答:
    • #传入数据都当做字符串,自动加双引号
    • $ 直接拼接sql中
    • #预编译,可以防止sql注入
    • 总之能用#别用$

4.MyBatis缓存结构

答:
    
    *  一级缓存sqlsession级别 同一个sqlsession访问
    *  二级缓存mapper级别 跨sqlsession共享
复制代码

转载于:https://juejin.im/post/5d52bbd8e51d4561e721decd

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值