JavaWeb总结——jsp+servlet

参考资料

JavaWeb总结——jsp+servlet_第1张图片

知识梳理:

1、基础语法

scriptlet——三个指令——六个动作

2、内置对象

九大内置对象——四大作用域——四种追踪技术

3、servlet与java

导入Javabean——servlet生命周期——跳转——过滤器

第一章——Java Web发展历程

1、Web发展历程

a、为了科研,设计出Internet,进一步发展,应用HTTP协议进行超文本和超媒体数据的传输,这种Web返回的只是电子文本的形式,内容永远是固定的

b、推出Applet(小程序),可以嵌入在Web页面上的小应用程序,在客户端植入JVM,不允许进行文件度读写,也无法进行数据库的操作,下载速度缓慢

c、动态Web,此时的客户端不再需要JVM的支持,Web容器会拼凑代码动态生成数据

JavaWeb总结——jsp+servlet_第2张图片

2、静态web与动态web的区别

静态与动态的根本区别是动态web可以连接数据库,静态代码是固定的,动态代码是拼凑而成的,动态的最大特点就是具备交互性,会自动根据用户请求的不同而显示不同的结果

 

3、实现动态web的方式

  • CGI:

最早出现的实现动态Web的操作标准,可以采用任何语言实现,采用多线程机制处理,每一个新用户连接到服务器上时,服务器都会为其分配一个新的进程,执行效率很低

  • PHP:

一种跨平台的服务器端的嵌入式的脚本语言,能迅速地写出动态页面,需要运行在Apache服务器下,只有在使用MySQL数据库时才可以达到性能的最大发挥

  • ASP:

ASP是一个动态Web服务器端的开发环境,利用它可以产生和运行动态的,交互的,高性能的Web服务应用程序,采用VBScript开发语言,只能运行在IIS服务器上,而且只能在SQLServer数据库上才可以得到最大发挥,相对于使用Java开发而言,性能很差

ASP.NET:基于.NET框架平台,可以使用自己喜欢的语言进行开发,但微软的产品永远会受到平台的限制,应用范围不广

  • JSP:

使用Java完成的动态Web开发,在HTML中嵌入Java代码,具有跨平台性,JSP的前身是Servlet

4、c/s模式与b/s模式

c/s模式:客户/服务器模式

b/s模式:浏览器/服务器模式,以浏览器作为客户端

5、http协议

是指从客户端到服务端的请求消息。包括:请求方法URI协议/版本, 请求头(Request Header), 请求正文

6、企业级开发框架

JavaWeb总结——jsp+servlet_第3张图片

7、JavaEE构架

三大核心、四大容器

JavaWeb总结——jsp+servlet_第4张图片

a、JavaEE构架基于Java SE基础构建的,主要由容器、组件和服务三大核心部分组成

b、JavaEE一共提供了四种容器,Appelt Container、Application Client Container、Web Container和EJB Container

  • Application程序

    使用主方法运行的一种组件

  • Web容器

    运行JSP和Servlet组件

  • EJB

提供的是一个业务中心,属于分布式开发

三层架构

在整个企业的应用环境中,JavaEE构架只是工作在中间层的一种组件

JavaWeb总结——jsp+servlet_第5张图片

 

客户层:

分为内部用户和外部用户,客户端可以使用Web浏览器,也可以是Java编写的应用。

中间层:

为客户访问提供服务,使用JavaEE中的各种组件技术进行搭建,且各个容器之间

企业信息系统层:

例如保存数据的数据库

JavaEE的MVC设计模式

JavaWeb总结——jsp+servlet_第6张图片

 







第五章——JSP基础语法

1、隐式注释

  • 单行注释://
  • 多行注释:/* */
  • Jsp注释:<%--   --%>   
  • 显式注释

2、Scriptlet

一种脚本小程序,简单的说其实就是在HTML代码中加入了Java代码

  • <% %>:定义局部变量,编写语句等
  • <%! %>:定义全局变量、方法、类
  • <% =%>:输出一个变量或一个具体的变量

3、设置页面得到MIME

a、MIME:指定某个扩展名文件将使用何种应用程序打开的一个说明

b、<%@ page language=”java” contentType=”text/html;charset=gbk”%>

c、pageEncoding指的是JSP文件本身的编码,而contentType中的chartset指的是服务器发送给客户端的内容编码。

4、错误页的设置

a、通过errorPage属性指定错误出现的跳转页,属于服务器跳转

b、错误处理页必须有明确的标识,通过isErrorPage属性指定,内容为“true”

5、三个指令

  • page指令(用来声明JSP页面的属性等)
<%@ page
[language="java"]
[contentType="mimeType[ ;charset=CHARSET ]"]
[import="{package.class|package.*},..."]
[info="text"]
[extends="package.class"]
[session="true|false"]
[errorPage="relativeURL"]
[isThreadSafe="true|false"]
[buffer="none|8kb|size kb"]
[autoFlush="true|false"]
[isThreadSafe="true|false"]
[isELIgnored="true|false"]
[page Encoding="CHARSET"]
%>

JavaWeb总结——jsp+servlet_第7张图片

  • 包含指令

静态包含:

<%@ include file=”文件路径”%>

先包含,然后一起进行编译,最后将一份整体的内容展现给用户

动态包含(动作):

          

                           (向被包含页面传递参数)

          

           先进行动态处理,然后将处理后的结果包含进来

  • taglib指令

指明JSP页面内使用的JSP标签库,taglib指令有两个属性,uri为类库的地址,prefix为标签的前缀

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

6、六个动作(行为)

  • 动态包含
  • 请求转发
  • 设置请求参数
  • 创建一个对象
  • 给指定的对象属性赋值
  • 取出指定对象的属性值





     

第六章——九大JSP内置对象

JavaWeb总结——jsp+servlet_第8张图片

 

四种属性范围(四大作用域)

  • page:只在一个页面中保存属性,跳转之后无效
  • request:只在一次请求中保存属性,服务器跳转后依然有效
  • session:再一次会话范围中保存,无论如何跳转都可以使用,但新开浏览器无法使用
  • application:在整个服务器上保存,所有用户都可以使用

1、pageContext

表1 pageContext对象的常用方法
方法 说明
ServletRequest getRequest() 返回当前页的 request 对象
ServletResponse getResponse() 返回当前页的 response 对象
ServletConfig getServletConfig() 返回当前页的 ServletConfig 对象
HttpSession getSession() 返回当前页的 session 对象
Object getPage() 返回当前页的 page 对象
ServletContext getServletContext() 返回当前页的 application 对象
public Object getAttribute(String name) 获取属性值
Object getAttribute(String name,int scope) 在指定的范围内获取属性值
void setAttribute(String name,Object attribute) 设置属性及属性值
void setAttribute(String name,Object obj,int scope) 在指定范围内设置属性及属性值
void removeAttribute(String name) 删除某属性
void removeAttribute(String name,int scope) 在指定范围内删除某属性
void invalidate() 返回 servletContext 对象,全部销毁

2、page

只有在本页面内才是合法的

表1 page对象常用的方法
方法 说明
class getClass() 返回当前 Object 的类
int hashCode 返回 Object 的 hash 代码
String toString 把 Object 对象转换成 String 类的对象
boolean equals(Object obj) 比较对象和指定的对象是否相等
void copy (Object obj) 把对象拷贝到指定的对象中
Object clone() 复制对象(克隆对象)

 

3、request对象

主要作用是接受客户端发送而来的请求信息

表1 request对象常用的方法
方法 说明
Enumeration getAttributeNames() 用于返回 request 对象的所有属性的名称集合
String getParameter(String name) 用于获取客户端传送给服务器端的参数。主要由 name 指定,
通常是表单中的参数
Enumeration getParameterNames() 用于获取客户端传送的所有参数的名字集合
int getServletPath() 用于获得 JSP 文件相对于根地址的地址
String getRealPath(String path) 用于获取一虚拟路径的真实路径
cookie[] get Cookie() 用于获取所有的 Cookie 对象
void setAttribute(String key,Object obj) 设置属性的属性值

 

  • get与post的区别

         a、  对于提交内容,get会显示在地址栏之后,而post不会

         b、get的请求信息长度有限制,一般4~5K

4、response对象

主要作用是对客户端的请求进行回应

 

表1 response对象的常用方法
方法 说明
void addCookie(Cookie cookie) 添加 Cookie 的方法
void sengRedirect(java.lang.String location) 把响应发送到另一个位置进行处理
  • 客户端跳转

a、等待跳转response.setHeader(“refresh”,”时间间隔”;”URL”)

b、HTML跳转

 c、直接跳转response.sendRedirect()

  • 客户端跳转与服务器跳转最明显的区别

           a、客地址栏会改变,服不会改变

           b、只有服request范围的属性保存到跳转页

           c、服执行到跳转语句时会立刻进行跳转,客整个页面执行完后才跳转

5、session对象

表1 session对象的常用方法
方法 说明
Object getAttribute(String name) 获取指定名字的属性
Enumeration getAttributeName() 获取 session 中全部属性的名字,一个枚举
long getCreationTime() 返回 session 的创建时间,单位:毫秒
public String getld() 返回创建 session 时 JSP 引擎为它设置的唯一 ID 号
int getMaxInactiveInterval() 返回两次请求间隔多长时间 session 被销毁(单位:秒)
void setMaxlnactivelnterval(int interval) 设置两次请求间隔多长时间 session 被销毁(单位:秒)
void invalidate() 销毁 session 对象
boolean isNew() 判断请求是否会产生新的 session 对象
void removeAttxibute(String name) 删除指定名字的属性
void setAttribute(String name,String value) 设定指定名字的属性值
  • session对象

每一个session对象都表示不同的访问用户,session只能应用在http协议当中

  • sessionId

当一个用户连接到服务器,会自动为此session分配SessionId,通过SessionId来区分不同的用户,通过getId()方法取

编号

 

对于重新启动服务器的同一用户,服务器仍会为其分配一个新的SessionId。

  • 四种会话跟踪技术

通过session提供的方法保存

通过Cookie保存信息

通过表单的隐藏域保存信息

通过地址重写的方式保存信息

6、application对象

application 对象用于保存应用程序的公用数据,服务器启动并自动创建 application 对象后,只要没有关闭服务器,application 对象就一直存在,所有用户共享 application 对象。

表1 application对象的常用方法
方法 说明
getAttribute( String arg) 获取 application 对象中含有关键字的对象
getAttributeNames() 获取 application 对象的所有参数名字
removeAttribute(java.lang.String name) 根据名字删除 application 对象的参数
setAttribute(String key,Object obj) 将参数 Object 指定的对象 obj 添加到 application 对象中,并
为添加的对象指定一个索引关键字

 

7、exception

用于错误页面,如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译

JavaWeb总结——jsp+servlet_第9张图片

8、config对象

主要功能是取得初始化的配置信息

所有的初始化参数是在中配置的,必须通过映射路径访问才可以取得初始化参数

JavaWeb总结——jsp+servlet_第10张图片

9、out对象

完成页面的输出操作,但使用表达式完成输出较多

表1 out对象常用的方法
方法 说明
void print(各种数据类型) 将指定类型的数据输出到 HTTP 流,不换行
void println(各种数据类型) 将指定类型的数据输出到 HTTP 流,并输出一个换行符
void newline 输出换行字符

10、cookie

Cookie是服务器保存在客户端的信息JavaWeb总结——jsp+servlet_第11张图片







第七章——JavaBean

1、简介

  • POJO:

简单的Java对象

  • VO:

专门用于值传递上

  • TO:

传输对象,进行远程传输时,必须时间Serializable接口

  • 优点:

分离代码

重复使用

Web中的类必须放到一个类中

必须声明为public class

属性必须封装

必须有setter、getter

至少存在一个无参构造方法,为JSP标签所使用(没有构造方法时会自动生成无参构造)

2、Web开发标准结构

JavaWeb总结——jsp+servlet_第12张图片

JavaWeb总结——jsp+servlet_第13张图片

Class要进行访问都要在classpath中进行配置之后才可使用,WEB-INF\classes和WEB-INF\lib文件夹实际都代表了classpath,直接将jar包或*.class文件复制到这些文件夹中

WEB-INF的安全性是最高的,所有的字母必须大写,外部无法访问,需要添加映射操作



      name

      资源路径





      name

      URL路径

节点的主要功能是连接节点,此节点名称只在配置文件的内部起作用,且多个配置不能重名

3、导入JavaBean

  • 导入包后手动实例化

<%@ page import=” “%>

  • 使用指令自动实例化

 

4、设置属性

JavaWeb总结——jsp+servlet_第14张图片

5、取得属性

6、删除JavaBean

JavaWeb总结——jsp+servlet_第15张图片


第九章——Servlet程序开发

1、Servlet简介

Servlet(服务端小程序)是使用Java语言编写的服务端程序,处理客户端传来的HTTP请求,并返回一个相应响应,所有的Servlet程序都是以*.class的形式存在的,所以必须在WEB-INF\web.xml文件进行Servlet程序的映射配置,每一个Servlet都可以配置多个名称



       

       





       

       

@WebServlet(name="helloUser2", urlPatterns={"/getUser","/userInfo"},loadOnStartup=1)

 

2、Servlet生命周期

  • 加载

Web容器负责加载Servlet(寻找路径),加载后通过反射机制实例化

  • 初始化

容器调用init()方法初始化对象,目的是为了让Servlet对象在处理客户端请求前完成一些初始化工作,如建立数据库连

接、连接资源文件信息等,如果初始化失败,则此Servlet将被直接卸载

  • 处理服务

调用service()方法进行处理,但一般来说这个方法是不需要重写的,因为在HttpServlet中已经有了很好的实现,它会根

据请求的方式,调用doGet,doPost以及其他的doXXX方法,也就是说service是用来转向的,所以我们一般写一个

servlet,只需要重写doGet或者doPost就可以了

  • 销毁

当Web关闭或检测到一个Servlet要从容器中被删除时,会自动调用destroy()方法

  • 卸载

当一个Servlet调用玩destory()方法后,此实例等待将等待被垃圾收集器所回收,如果一个Servlet长时间不使用的话,会

被容器自动销毁,如果需要再次使用此Servlet时,会重新调用init()方法初始化

 

初始化方法一共有两init()和init(ServletConfig config),如果同时出现,则调用的是后者,通过config对象读取

web.xml配置中的初始化参数,此对象实际上是ServletConfig接口的实例

3、取得内置对象

servlet本身提供的只有request、response和config对象

  • 取得HttpSession实例

JavaWeb总结——jsp+servlet_第16张图片

  • 取得ServletContext实例

application内置对象是ServletContext接口的实例,表示的是Servlet上下文,通过getServletContext()取得

4Servlet跳转

  • 客户端跳转

使用HttpServletResponse接口的sendRedirect()方法,只能传递sessionapplication范围的属性,无法传递request

围的属性

  • 服务器跳转

使用ServletRequest接口的getRequestDispatcher(“跳转路径”)为实例化,然后调用forwardrequestresponse),页

面路径不会发生变化

5Web开发模式:Mode

Servlet为主体展开,由Servelt接受所有的客户端请求,根据请求调用相应的JavaBean,将所有的显示结果交给JSP完成JavaWeb总结——jsp+servlet_第17张图片

 

EJB:一种分布式组件技术,分为会话Bean、实体Bean和信息驱动Bean三种

 

MVC设计模式中,最关键的部分是使用RequestDispatcher接口,所有的请求都会交给Servelt进行处理,然后调用JavaBean,将JavaBean的操作结果通过此接口传递到JSP页面,一般使用request传递属性,因为保存范围越大占用的内存就越多

6、过滤器

Web三大组件:ServletFilterListener

 

从功能上看Servlet可以分为简单Servelt(如上)、过滤Servlet和监听Servlet三种,JSP可以完成简单的Servlet功能

 

Web组件:Web组件是指对 Web 的数据和方法进行封装实体,可以包含 JavaBean 组件,从而方便地进行业务逻辑的处理

 

过滤器是一种组件的形式绑定到Web应用程序当中,可以定义多个过滤器,采用“链”的方式进行处理的,当需要限制用户访问某些资源或者正在处理请求时提前处理某些资源时,可以使用过滤器完成

JavaWeb总结——jsp+servlet_第18张图片

7、实现过滤器

 

继承Filter接口

JavaWeb总结——jsp+servlet_第19张图片

FilterChain接口主要作用是将用户的请求向下传递给其他的过滤器或者Servlet,通过调用doFilter形成一个“过滤链”的操作



       

       

      

            

            

      





       

       

 

 @WebFilter(filterName = "LoginFilter", urlPatterns = "/*")

a:表示过滤位置,如果是“/*”表示对于根目录下的一切操作都需要过滤

b:过滤器的初始化方法是在容器启动时自动加载的,通过FilterConfiggetInitParamter()方法取出配置的初始化参数,只调用一次

c:可以增加多个过滤路径,增加多个

 

设置统一编码
public class FilterDemo01 implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
 
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        chain.doFilter(request, response);  

    }

    @Override
    public void destroy() {
     
    }
}

 

你可能感兴趣的:(此恨绵绵无绝期)