zoukankan      html  css  js  c++  java
  • j2ee学习笔记

    Servlet:

    ①字符集问题:
    ②身份验证:
    ③统一的输入输出:类似母版,重写ServletResponeceWraper的getWriter,使用缓存流。
    然后输出时,分析stringWriter ,重构html结构。
    原因:之前的方式存在两个问题:
    ①目录结构混乱
    ②程序可能将printwriter关闭,导致下边的输出停止。

    解决方法:filter 过滤器
    特点:
    ①过滤方向是双向的
    ②request和response,chaine
    ③配置web.xml
    ④默认只过滤client的请求
    <dispatcher>request</dispatcher> 默认状态
    <dispatcher>forward</dispatcher>内部转发也过滤
    <dispatcher>include</dispatcher>

    修饰模式(装配模式)
    实现接口,成员为其实现类的对象,增加其他数据。
    ①ServletResponeceWraper就是这样一个类,
    ②我们继承其类,即可完成。


    listener
    ===监听生命周期的事件==
    创建:*Init ①服务器启动时,加载公用数据。
    销毁:*Destroy

    =============================
    ServletContextListener
    HttpSessionListener :购物车collection<Product>;
    ServletRequestListener
    =============================
    ServletContextAtrributeListener
    HttpSessionAtrributeListener
    ServletRequestAtrributeListener
    =============================

    JSP与Servlet的对比:
    ①实质都是Servlet,应用服务器将其翻译,转换成java,然后使用。tomcat/work/catalina/...
    ②servlet更适合业务处理,jsp更适合视图,即显示数据

    JSP:
    一、语法:
    ①.jsp的后缀
    ②存在位置:webapps下,web-inf外的路径下
    ③直接访问,无须web.xml配置
    ④当jsp首次访问时,服务器将jsp翻译成java文件,然后javac成执行文件

    二、元素:
    1>脚本元素:
    ①声明脚本 <%! 声明体%> 成员变量
    ②表达式脚本 <%= 表达式 %> 编译在service方法中,当局部变量与成员变量重复时,所以优先使用普通脚本中的变量。
    ③普通脚本 <% %> 在service方法中,变量是局部变量 可以编写除了函数声明外的任何java代码


    2>指令元素:
    1.页面指令:<%@page 属性="值" 属性2="值2" ...%>
    对jsp页面描述说明
    ①contentType="text/html"
    contentType="text/html;character-set"
    ②import 导包、类
    <%@page import="java.util.*"%>
    默认,已导入:java.lang.*,javax.servlet.*,javax.servlet.http.*,javax.servlet.jsp.*
    ③isErrorPage="true|false"
    ④errorPage="URI"
    ⑤session="true" 是否使用session,默认true
    ⑥language="java"
    2.包含指令:
    静态包含:<%@ include file="url"%> 静态包含,编译前包含

    三、隐含对象
    不需要new,直接使用的一组对象,tomcat自动创建
    只能在<%=%>、<% %>中使用。
    1.request
    type:HttpServletRequest
    method:getParameter
    setAttribute
    getAttribute
    getSession
    getMethod
    getRequestURL:全球资源定位
    getRequestURI:主机资源定位
    getContextPath:应用名

    2.session
    type:httpSession
    method:setAttribute
    getAttribute
    removeAttribute
    isNew:第一次访问true,之后是false
    3.out
    type:javax.servlet.jsp.jspWriter
    4.exception
    注意:只能在error.page中使用
    5.responce:

    6.application
    type:javax.servlet.ServletContext
    setAttribute()
    getAttribute()
    removeAttribute()
    7.page
    type:java.lang.Object
    代表当前jsp对象
    8.config
    type:javax.servlet.servletConfig

    9.pageContext
    type:javax.servlet.jsp.PageContext
    ①获取其他8个隐含对象
    pageContext.getRequest();
    ②作用域:代表请求中的一个页面,其作用域只是一个请求中的一个页面对象
    ③可以直接获取其他3个作用域中的属性:依次从小到大查找
    Object o = pageContext.findAttribute();
    getAttribute(name,scope)
    ④include|forward
    四、EL表达式:express language 表达式语言
    1>语法:${ name } 按照从小到大的顺序在四个作用域中查,找名字为name的命名属性
    2>作用:计算表达式,且输出${param.name} == <%= request.getParameter(“name” ) %>
    3>基本运算:${ empty a } :a如果为空返回true ,否则返回false
    4>简化获取作用域中的命名属性:

    ②当作用域中存在重名变量时,可以在EL中明确指定查找的作用域:
    5>作用域:pageSope/requestScope/sessionScope/applicationScope
    6>如果属性是对象,可以使用点语法。
    7>获取Client的数据:${param.age} 等价于 request.getParameter(age);
    8>获取Cookie的数据:${cookie.JSESSIONID.value}
    等价于:Cookie cookies = request.getCookies();
    遍历;
    9>隐含对象:

    五、JSTL :java standard tag library apache提供的


    四、静态包含和动态包含(类似静态库和动态库)
    <%@include file=“fun.jsp”%>
    静态包含指令,用于将目标文件的源代码包含到本页面中
    相当于进行了一次拷贝粘贴操作,被包含的目标文件不会生成独立的servlet源码
    如果被包含的多个文件中有重名的变量,会出现变量冲突

    <jsp:include page=“header.jsp” />
    动态包含指令,用于将目标文件的输出结果和本页面合并在一起
    被包含的目标文件独立运行,会生成独立的servlet文件
    由于只是进行结果的合并,不存在变量冲突

    参数传递:
    动态包含参数传递:当前jsp对象向被包含对象传递参数,使用getparameter("name")获取即可
    <jsp:include page=“/common/header.jsp”>
    <jsp:param name=“a” value=“123”/>
    <jsp:param name=“b” value=“456”/>
    </jsp:include>

    <jsp:forward page=“sub/b.jsp”>
    <jsp:param name=“a” value=“1”/>
    <jsp:param name=“b” value=“2”/>
    </jsp:forward>

    五、Java标准标签库 JSTL java standt tag libary
    ①引入包文件:jstl.jar 和 standard.jar

    ②标签作用域scope
    page : pageConetxt
    session : HttpSession
    application : ServletContext


    框架学习:

    一、Hibernate框架:


    二、Struts2框架:
    1.struts.xml
    <package name="user" namespace="/User" extends="struts-default">
    <action name="Login">
    <result>/login.jsp</result>
    </action>
    <action name="Welcome" class="com.yiibai.user.action.WelcomeUserAction">
    <result name="SUCCESS">/welcome_user.jsp</result>
    </action>
    <action name="Hello">
    <result>/WEB-INF/page/hello.jsp</result>
    </action>
    </package>
    ①package的namespace不写,则为默认命名空间,找不到的action都会在默认命名空间下寻找
    ②action:
    name:action的名字,区分大小写,请求中可以不添加action的后缀
    class:默认是"ActionSupport"
    method:默认是"execute"
    搜索顺序:
    ①请求url中寻找,如未找到,跳至上一级,继续①,如果找到,则处理返回
    ②如果根命名空间下还未找到,则到默认命名空间寻找
    ③如果找到,则报错
    ③result:
    name:默认"SUCCESS"


    三、spring mvc框架
    1.spring mvc是spring框架的一部分,即在spring框架下的mvc的具体处理和实现
    2.执行过程:
    1.request->dispacherServlet
    2.dispacherServlet -> handlerMapping 根据注解、xml
    3.handlerMapping -> dispacherServlet 返回handlerExcutionExplain(Handler)
    4.dispacherSerlet -(handler)> handlerAdapter
    5.handlerAdapter -> 执行handler
    6.handlerAdapter —> dispacherServlet 返回ModelAndView
    7.dispacherServlet -(ModelAndView)> Viewresolver
    8.Viewresolver -> dispacherServlet 返回物理View
    9.dispacherServlet 填充model,视图渲染,相应结果


    3.组件:
    1.前端控制器 DispatcherServlet (不需要开发,配置即可)
    作用:Controller,接受请求,相应结果,即转发器dispacher

    2.处理器映射器 HandlerMapping (不需要开发)
    作用:根据请求url,根据注解、查找handler

    3.处理器适配器 HandlerAdapter (不需要开发)
    作用:按照特定规则,执行handler
    注意:编写handler按照adapter的要求编写

    4.处理器 Handler (需要按照adapter进行开发)

    5.视图解析器 View resolver
    作用:根据逻辑视图,解析成真正的视图
    6.视图 View (jsp freemaker pdf excel)(需要开发)


  • 相关阅读:
    【HDU 2507】【ACM-ICPC算法基础训练教程 题1-6】 迷瘴(贪心)
    【算法】Floyd-Warshall算法(任意两点间的最短路问题)(判断负圈)
    【读书笔记】2015年考研英语二真题翻译(帮你克服艰难之路的真理+熟路效应)
    visio给任意图形进行填充
    scanf清除缓存区
    macbook安装并破解Clion2018(Pycharm也一样)
    mac电脑对ntfs格式硬盘进行写操作(简单说就是向ntfs硬盘拷贝东西)
    查找mac下腾讯视频下载地址
    PyQt5初级教程(一)
    迷途指针
  • 原文地址:https://www.cnblogs.com/cz-blog/p/5912207.html
Copyright © 2011-2022 走看看