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)(需要开发)

j2ee学习笔记的更多相关文章

  1. J2EE学习笔记-第二章(Web应用初步)

    首先要理解一些概念的词语,到底这些是什么(当我读懂了后,会逐一填补完整,现在我真的有点混淆) web组件-相当于功能性的组件,就像是零件,汽车的轮胎,汽车的门,所有组件组合后,才能成为一辆车,有时候也 ...

  2. j2ee学习笔记 Filter过滤器

    作用:过滤response和request对象的内容 使用: Filter是J2EE的一个接口,自定义Filter需要实现该接口,并重写所有的方法. Filter提供的方法: init() doFil ...

  3. <J2EE学习笔记>关于Servlet的讲义

    题外话:接触java又是半年之前的事情了,当初好好学了java却把cpp给忘了,到现在又把手里发热的cpp给放下重新捡起来java,究竟这两种OOP语言我能不能清晰分开记住呢 以下全部课件来自于同济大 ...

  4. j2ee学习笔记 javascript 学习

    JavaScript 组成: ECMAScript + BOM + DOM Window对象是JS中的顶层对象 ECMAScript: 规定了一些语法,变量,for循环等等结构 BOM: Browse ...

  5. j2ee学习笔记URLEncoder.encode(String , enc)处理特殊字符

    从页面上传递数据时,特殊字符对于超链接会自动进行解码 : 其他方式需要手动进行解码.

  6. <J2EE学习笔记>续上次Servlet部分提升内容 以及JSP的内容纲要

    以下全部课件均来自于同济大学刘岩老师的<EnterpriseJavaProgramming> 因为授课语言问题,如果翻译有不正确之处欢迎指正 Section 1. 关于Servlet的部分 ...

  7. j2ee开发之Spring2.5框架学习笔记

    Spring 2.5框架学习笔记 1.是一个开源的控制反转IOC和面向切面AOP的容器框架 2.IOC控制反转 public class PersonServiceBean { private Per ...

  8. j2ee开发之hibernate框架学习笔记

    hibernate框架技术重点学习笔记 1.针对不同的数据库,有不同的数据库实现类,使其符号对应的数据库? mysqlDaoImpl oracleDaoImpl ... ... 2.对象和表记录的转换 ...

  9. Java学习笔记之JNDI(六)

    JNDI 是什么 JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的 ...

随机推荐

  1. 【转载】使用 IntelliJ IDEA 新建一个 web项目

    IntelliJ IDEA 创建Web项目(全教程)   说明:IntelliJ IDEA 版本为14.JDK 版本为1.7tomcat 版本为apache-tomcat-7.0.70 注:在创建过程 ...

  2. 【udacity】机器学习-knn最近邻算法

    Evernote Export 1.基于实例的学习介绍 不同级别的学习,去除所有的数据点(xi​,yi​),然后放入一个数据库中,下次直接提取数据 但是这样的实现方法将不能进行泛化,这种方式只能简单的 ...

  3. 死磕itchat源码--config.py

    itchat的配置文件,源码: import os, platform # 版本及微信的url,二维码等 VERSION = '1.3.10' BASE_URL = 'https://login.we ...

  4. Doxyfile中插入图片

    下面讲一下如何在doxyfile中插入图片 在查看别人写的文档的过程中,看到可以在doxyfile中插入图片,对此十分的好奇,所以拿出来研究一下 那么这是如何实现的? 根据代码,可以看到如下的注释 @ ...

  5. HDU 2268 How To Use The Car (数学题)

    题目 //做起来很艰辛,总结起来很简单... //注意步行速度可能比车的速度快.... //推公式要仔细,,,, //一道对我来说很搞脑子的数学题,,,,, //车先送第一个人上路,第二个人步行:中途 ...

  6. Monkey基本常用命令整理

    adb shell monkey   -v 500  >F:/monkeylog2018.txt    -P表示包名   -V表示输出日志的详细级别  一个-V表示一级 递增  >输出日志 ...

  7. Linux—Ubuntu14.0.5安装MySQL

    1.更新资援列表 sudo apt-get update 2.安装mysql的操作命令(下一步选中“Y”) sudo apt-get install mysql-server 3.输入MySQLroo ...

  8. cd:切换目录

    cd命令 1.命令详解 [功能说明] cd命令是“change directory”中每个单词的首字母缩写,其功能是从当前工作目录切换到指定的工作目录. [语法格式] cd    [option]   ...

  9. 6.在idea中链接数据库

    1.打开数据库配置的窗口 File - view  - Tool Windows - Database 2.打开mysql的数据库链接模板 Database - + - Data Source - M ...

  10. react 点击事件+父子传值

    接下来要做的效果是,在父组件添加两个按钮,点击后改变父组件传过去的值 父组件 import React, { Component } from 'react'; import Test from '. ...