JSP和Servlet知识点总结_servlet+jsp和b/s对比-程序员宅基地

技术标签: JAVAWEB  JSP  Servlet  

第一章: 动态网页开发基础

三大领域: B/S(网站)C/S(QQ) 嵌入式开发(苹果,安卓手机)

动态网页/静态网页:

所需技术:html,css,数据库,javascript,xml,一门高级语言(java,C#,PHP)

主流的动态网页技术:jsp/asp.net/php

Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache Nginx IIS(Microsoft的Internet信息服务器(Internet Information Services,IIS)
 

常见的web服务器:                 

                     1. weblogic   oracle 公司

                     2. websphere  IBM公司  

                     3. Jboss 免费的开源的

                     4. tomcat 小型的

一、JSP 定义: 1)Java Server Page, Java EE 组件,本质上是 Servlet。

                    2)运行在 Web Container.接收 Http Request,生成 Http Response(默认协议是 Http 请求和响应)

                    3)JSP 使得我们能够分离页面的静态 HTML 和动态部分——我们需要的技术。

                    4)使页面可以混和html代码、Java代码以及JSP标签;允许访问组件

2、JSP出现:servlet做界面比较麻烦

3、JSP是编译运行,PHP为解释运行 (注)解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(*.OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。

4、Tomcat的获取与安装

1. Tomcat安装完毕后要设置TOMCAT_HOME环境变量设置方法与java环境变量步骤类似,设置值为Tomcat的安装目录

2. Tomcat启动与停止

通过服务器实现启动或停止

通过控制面板>管理工具>服务>鼠标右击Apache Tomcat选择启动停止

通过Tomcat菜单中的Monitor Tomcat工具启动或停止Tomcat服务

通过所有程序>Apache Tomcat XX>Monitor Tomcat>General选择启动或停止
 

5、Tomcat目录结构

/bin              存放各种平台下用于启动和停止Tomcat的脚本文件

/conf            存放Tomcat服务器的各种配置文件,其中最重要的是server.xml

/lib              存放Tomcat服务器所需的各种JAR文件

/logs            存放Tomcat的日志文件

/temp           Tomcat运行时用于存放临时文件

/webapps        Web应用的发布目录

/work           Tomcat把由JSP生成的Servlet放于此目录下

6、server.xml 配置

端口号的配置:

    Tomcat目录下>conf>server.xml  打开后找到<Connector>节点然后修改port属性

    http://localhost:8080/

Web应用的目录结构,web应用是位于tomcat/webapps目录下的一个子目录

      /    web的根目录存放各类jsp,html

      /WEB-INF     存放应用程序所使用的各种资源包括web.xml

      /WEB-INF/classes  存放class文件

      /WEB-INF/lib      存放JAR文件

配置web应用起始页:

     修改web.xml文件中的以下两个标签,注意标签名

      <welcome-file-list>

     <welcome-file>index.jsp</welcome-file>

      </welcome-file-list>

第二章-JSP的组成

JSP的执行过程: 翻译阶段

      编译阶段

   执行阶段

 JSP页面组成:静态内容 ,指令,表达式 ,小脚本 ,声明 ,注释

JSP中的注释:HTML注释,JSP注释标记,

JSP指令元素page

              Language属性

              Import属性

              contentType属性

             举例: <%@ page language="java" import="java.util.*,java.text.*"  contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

jsp表达式:其语法为<%=  java表达式%>,容器会先计算表达式的值或者变量的值,然后将结果输出的页面

jsp声明 可以定义变量和方法,其中变量的值会一直保持,页面刷新不会重置该变量的值

定义在小脚本里面的变量,每次刷新页面会重置该变量的值

jsp页面中的代码执行加载顺序

java是在生成页面时在服务器端运行的代码,jsp在服务器的servlet里运行,而javascript和html都是页面生成完在浏览器端运行的代码。所以加载执行顺序是是java>jsp>js。

第三章-jsp数据交互

JSP内置对象:request,response,out,application,session

1. Request对象专门用于处理客户端请求

Request方法:String  getParamenter(根据页面表单组件名称获取页面提交数据)

             String[] getParamenterValues(获取一个页面表单组件对应多个值时的用户请求数据)

             Void setCharacterEncoding(解决中文乱码)

             Request.getRequsestDispacher(path)(返回一个javax.servlet.RequestDispacher对象,该对象用forward方法用于转发请求)

2.  JSP内置对象response

1. response对象与request对象相对应,它用于响应客户端输出信息

2. response对象几个常用方法

  addCookie(Cookie cookie) 在客户端添加Cookie

  setContentType(String type) 设置HTTP响应的contentType类型

  setCharacterEncoding(String chareet)设置响应所采用的字符编码类型

 重点:( sendRedirect(String path) 将请求重新定位到一个不同的URL上)

(注)1. 什么是转发:

     使用request的getRequestDispatcher()方法即可实现

     转发就是将客户端发送请求到服务器,Web服务器内部的方法在容器内完成处理和请求和转发,然后将目标资源发送给浏览器,不管服务器内部如何处理,浏览器都只提出了一个请求,因而客户端的URL地址不会发生改变,因此可以共享request范围内的数据   转发的作用:在多个页面交互的过程中实现请求术数据的共享。

    2. 重定向的执行结果就是客户端重新向服务器请求一个地址链接,由于是发送新的请求因而上次请求中的数据将丢失这种行为就是重定向  response.sendRedirect("welcome.jsp")]

重定向和转发的区别

区别一:

  重定向时浏览器上的网址改变

  转发是浏览器上的网址不变

区别二:

  重定向实际上产生了两次请求

转发只有一次请求

重定向:

  发送请求 -->服务器运行-->响应请求,返回给浏览器一个新的地址与响应码-->浏览器根据响应码,判定该响应为重定向,自动发送一个新的请求给服务器,请求地址为之前返回的地址-->服务器运行-->响应请求给浏览器

转发:

  发送请求 -->服务器运行-->进行请求的重新设置,例如通过request.setAttribute(name,value)-->根据转发的地址,获取该地址的网页-->响应请求给浏览器

区别三:

  重定向时的网址可以是任何网址

  转发的网址必须是本站点的网址

详解:

  重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。

转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起

三、JSP访问数据库

1. JDBC链接数据库

(1) 加载JDBC驱动。

(2) 与数据库建立链接。

(3) 发送SQL语句,并得到返回结果。

(4) 处理返回结果。

(5) 数据库访问结束后,进行资源释放。

使用JSP访问数据库,就是将JDBC访问数据库代码嵌入到JSP页面中,实现步骤与java相同。

第四章-状态管理

一. cookie

(一) 在jsp中使用cookie

1. 使用page指令

<%@page  import=”javax.servlet.http.cookie”%>

2. 创建cookie对象

Cookie  newCookie=new Cookie(String key,Object value);

3. 写入cookie

Response.addCookie(newCookie);

4. 读取cookie

Cookie[] cookies=request.getCookies();

(二)  cookie对象的几个方法60*60*24

  void    setMaxAge(int expiry)  设置有效期,单位秒

  void    setValue(String value)

  String  getName()

  String  getValue()

  Int     getMaxAge()  获取有效期,单位秒

二. session

(一)  session对象的几个常用方法

void   setAttribute(String key,Object value);

Object  getAttribute(String key)

void  invalidate()   设置session对象失效

String   getId()  获取session  id

void  setMaxInactiveInterval(int interval)   设置session的非活动时间

int  getMaxInactiveInterval()   获取session的有效非活动时间
 

 

 

 

(二) session和cookie的区别

1. session是在服务器端保存用户信息,cookie是在客户端保存用户信息

2. session中保存的是对象,cookie中保存的是字符串

3. session对象随会话结束而关闭,cookie可以长久保存在客户端

4. cookie通常用于保存不重要的用户信息,重要的信息使用session保存

session和cookie

默认情况下,浏览器同一个进程的不同页面共享临时Cookie,这个Cookie保存的SessionID成为服务器端识别Session的依据

Seesion对象有效期:一次会话(浏览器关闭可能导致会话结束)怎么判断会话结束:IE进程结束,重新打开或换个浏览器,否则在桌面上重新打开一个浏览器是指一个seesion对象

类似于生活中 当登录某个网站 关闭了改窗口 重新 打开时 依旧有效  

Seesion是保存在服务器中但是通过Cookie来实现

1. 重定向是客户端跳转,共有二次请求   转发是服务器端跳转 只有最开始打开页面的一次请求

  对Cookie的赋值只有等下一次浏览请求时才能生效

1.page代表JSP这个实例本身(用的少)

2.PageContext(域对象,存放数据只能在当前页面有效)

3.session(域对象,存放数据在一次会话有效)

4.applaction(域对象 存放数据在整个Web应用运行周期有效)

5.cookie是由服务器端生成,发送给客户端浏览器的,浏览器会将其保存在某个目录下的文本文件中。

通过cookie,可以实现浏览器与服务器之间的数据传递。

就WEB开发来说,一个会话就是用户通过浏览器与服务器之间的一次通话,它包含浏览器与服务器之间的多次请求、响应过程。

session与cookie均能实现信息的保存,但是二者的区别如下。

session是在服务器端保存用户信息,cookie是在客户端保存用户信息。

session中保存的是对象,cookie保存的是字符串。

session对象随会话结束而关闭,cookie可以长期保存在客户端。

cookie通常用于保存不重要的用户信息。我们可以降低代码的冗余问题,并且修改起来也更加方便

三.include指令:<%@  include file=”应用文件路径”%>

 

JSP的四种范围,分别为page、request、session、application

application:
全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享,生命周期为:应用程序启动到停止。

session:
会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期:会话超时,或者服务器端强制使会话失效。

request:
请求作用域,就是客户端的一次请求。

page:
一个JSP页面。

以上作用范围使越来越小, request和page的生命周期都是短暂的,他们之间的区别就是:一个request可以包含多个page页(include,forward以及filte

 

四.application

   (一)常用方法:

  void  serAttribute(String key,Object value)

  Object  getAttribute(String key)  

  String  getRealPath(String path)  返回相对路径的真实路径

 

五.对象的范围

(一)page范围:单一jsp页面的范围

    pageContext.setAttribute(“属性名”,属性值)

(二) request范围:

request.setAttribute(“属性名”,属性值)

(三) session范围,可以跨越多个请求

session.setAttribute(“属性名”,属性值)

(四) application范围,全局有效

application.setAttribute(“属性名”,属性值)

 

六.jsp的常用内置对象:out,request,response,session,application

1)JavaBean是Java中可以跨平台的重用组件。

(2)JavaBean在应用中主要负责封装数据和封装业务处理。

(3)JavaBean的定义要遵循一定的规则,体现在以下几个方面:

    1.公有类,并提供无参的公有构造方法.

    2.属性私有。

    3.具有公有的访问属性珠getter和setter方法。


第六章 jsp开发业务应用

分页

分页就是显示数据,能够按照指定格式显示,布局清晰,不受信息数量限制。

目前的分页方式有多种,一种是将所有查询结果保存在session对象或集合中,翻页的时候从session或集合取出一页所需的数据显示。这种方法有两个主要的缺点:一是用户看到的可能是过期数据;二是如果量非常大,查询一次结果集会耗费很长时间,并且存储的数据也会占用大量内存,效率明显下降。

用SmartUpload组件实现文件上传

SmartUpload组件式一个实现文件上传的免费组件,虽然已不再提供更新,但由于使用简单方便依然被非常广泛地使用。

SmartUpload组件的应用:

<% page import=”com.jspsmart.upload.*” %>

<%

SmartUpload su =new SmartUpload();

//初始化SmartUpload对象

Su.initialize(pageContext);

Try{

Su.upload();

} catch(Exception e){

e.printSackTrace();

out.println(“你选择的文件上传失败!”);



}

//得到单个上传文件的信息

Com.jspsmart.upload.File file=su.getFiles().getFile(0);

//设置文件在服务器的保存位置

String filepath=”upload\\”;

Filepath+=file.getFileName();

//文件另存为

File.saveAs(filepath,smartUpload.SAVE_VIRTUAL);

%>


 

第八章-JSTL和EL

EL表达式

作用:快速定位到作用域中的变量及其属性。

特点:1.自动转换类型。

        2.使用简单

语法: ${EL表达式}

操作符:

.操作符:   可以获取对象的某个属性值(例:${employee.computer})

[]操作符:  既可以获取对象的某个属性值,也可以获取数组型对象的某个下标的值(例:${employee[“computer”]}, ${list[0]})

EL隐式对象

作用域访问对象:pageScope,requestScope,sessionScope,applicationScope。与page,request,session,application内置函数用法一致,可以访问作用域内设置的函数。(例requestScope.name)

参数访问对象:param,paramValues。可以访问对应标签的name属性值和JSTL中定义的变量。(例:${param.name}  ${paramValues.habits})

JSP隐式对象:pageContext提供对页面信息和JSP内置对象的访问

[注:若查找时不指定作用域范围,则会照pageScope-requestScope―sessionScope―applicationScope顺序查找]
 

JSTL标准标签库

作用:可实现对页面中的逻辑控制

[注:使用前要导入核心标签库:

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

通用标签

1.定义变量或重新赋值

<c:set var=”变量名” value=”值” scope=”范围”/>

     <c:set value=”值” target=”目标对象” property=”对象属性名” />

2. 输出内容

<c:out value=”值” default=”为空时显示的默认值” />

3.移除变量

<c:remove var=”变量名” scope=”范围” />

条件标签

<c:if test=”判断条件” var=”变量名” scope=”范围”>

内容…

</c:if>

举例<c:set var="isLogin" value="${not empty sessionScope.userId}"/>

<c:if test="${not login}">

…登录表单

</form>

</c:if>

迭代标签

<c:forEach var=”当前成员引用名” items=”集合” varStatus=”属性名” 

begin=”开始位置,默认为0”

 end=”结束位置”

step=”递增量,默认为1”>

</c:forEach>

 

varStatus属性值:

current 当前迭代项

index索引

count 迭代计数

first 是否为第一次迭代

last 是否为最后一迭代

begin/end/step 标签的开始/结束/步长值

 

<!-- 循环输出商品信息 -->

<c:forEach var="product" items="${requestScope.products}" varStatus="status">

<!-- 如果是偶数行,为该行换背景颜色 -->

    <tr <c:if test="${status.index % 2 == 1 }">style="background-color:rgb(219,241,212);"</c:if>>

        <td>${product.name }</td>

        <td>${product.area }</td>

        <td>${product.price }</td>

    </tr>

</c:forEach>


 

第十一章-Servlet基础

1.servlet

1.1 servlet  ==>Java类

1.2 该java程序要遵守servlet开发规范(怎么遵守?通过 继承servlet接口)

1.3 servlet 是运行在服务器上的

1.4 servlet是jsp的基础

1.5 tomcat 3个功能: jsp容器  Web服务器   Servlet容器

3.servlet生命周期

 3.1当用户第一次访问 servlet时,tomcat会帮忙把servlet对象创造出来(只有一个servlet对象)

 3.2 然后调用init()方法 (只执行一次)

3.3以多线程的方式来处理客服端的请求  (调用了service()方法)

3.4 service()会自动根据 客服端来调用 doGet()或doPost()

3.5  servlet退出服务 (正常关闭才会调用,比如 关闭tomcat或更改.class文件 ,直接X掉web(浏览器)不会调用service())

二。servlet表单验证

1.创建web应用程序

2.在jsp文件中编写表单

!-- action提交的文件名与web.xml中标签<url-pattern>的名字一致-->

<form action="kevin">

username:

<input type="text" name="username" />

<br />

password:

<input type="password" name="password">

<br />

<input type="submit" value="submit" />

</form>

3.编写 servlet (Java类)LoginServlet(类名)

在类中获取表单的相关参数,并通过输出流输出     

 String username = req.getParameter("username");

        String password = req.getParameter("password");

        req.setCharacterEncoding("UTF-8");  

        resp.setContentType("text/htmll;charset=UTF-8");

        PrintWriter out = resp.getWriter();

        out.println("<html><head><title>Login message</title></head>");

        out.println("<body>");

        out.println("username: "+username);

        out.println(" password: "+password);

        out.println("</body>");

        out.println("</html>

4.在web项目的web.xml中添加信息

<servlet> 
       <servlet-name>L</servlet-name>  
      <servlet-class>LoginServlet</servlet-class>
 </servlet>
<servlet-mapping>
     <servlet-name>L</servlet-name>
     <url-pattern>/kevin </url-pattern>
</servlet-mapping>

5.发布项目 ,启动tomcat

6.在网页中输入地址

http://localhost:8080/jspch1101/index.jsp,输入用户名和密码点提交后会跳转到servlet页面

Servlet是一个符合特定规范的java程序,在服务器端运行,处理客户端请求并作出响应。

 

 

一、在调用Servlet时,首先要在程序中导入Servlet所需的包。  

 1.impoet java.io.*;

   2.import javax.servlet.*;

   3.import javax.servlet.http.*;

二、创建用于Web应用时Servlet继承自HttpServlet类。

三、实现doGet()或者doPost()方法。

四、Servlet的生命周期

   1. 加载和实例化  (Servlet容器根据Servlet类的位置加载Servlet类,成功加载后,由容器创建

      Servlet的实例)

   2. 初始化 (init()方法只能被调用一次)

   3. 服务 (调用Servlet的service()方法处理客户端请求)

   4. 销毁 (销毁实例之前调用destroy()方法)

五、Servlet的编译和部署

编译产生的class文件放入web应用的WEB-INF/classes目录下

文件夹层次与包一致

例如 org.jbit.servlet.HelloServlet的class文件全路径为

WEB-INF/classes/org/jbit/servlet/HelloServlet.class

 

 

对于GenericServlet类中的init()和init(ServletConfig config)

在开发中我们是使用GenericServlet的子类HttpServlet的,而HttpServlet继承了GenericServlet中
的init()和init(ServletConfig config)方法,而在init(ServletConfig config)中会调用init()的,
而且系统会在init(ServletConfig config)方法中执行下面语句:
public void init(ServletConfig config){
this.config = config;//this.config为GenericServlet类的config
init();
}
其实在父类的有参init方法中会隐式的调用无参的init的方法,仅此而已,没什么难的,初始化时永远都调用的是有参的init的方法。

在GenericServlet中,从servlet接口带来的init(ServletConfig config)对它进行重写时,如果忘了调用super.init(config)时,就会出现空指针异常,为了解决这样的

情况,GenericServlet中于是有了一个无参的init()方法,推荐大家重写init方法时,

重写无参的init()方法.

(第一种init()方法是Servlet接口中init()方法的实现。这种方法中,首先将ServletConfig对象保存在一个transient实例变量中,然后调用第二种不带参数的init()方法。

 

 

 

通常我们在编写集成自GenericServlet的Servlet类时,只需重写第一种不带参数的init()方法就可以了。如果覆盖了第一种init()方法,那么应该在子类的该方法中,包含一句super.init(config)代码调用。) 

 

web.xml文件中Servlet映射路径<url-pattern>

对于如下的一些映射关系:

• Servlet1 映射到 /abc/*

• Servlet2 映射到 /*

• Servlet3 映射到 /abc

• Servlet4 映射到 *.do


注意: *.do这种形式优先级别最低

<load-on-startup>-1</load-on-startup>、

· load-on-startup标记容器是否在启动的时候实例化并调用其init()方法的优先级。

· 它的值表示servlet应该被载入的顺序

· 当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;

· 如果值小于0或未指定时,则表示只有在第一次请求的容器才在该servlet调用初始化函数

· 正值越小,servlet的优先级越高,应用启动时就越先加载。

· 值相同时,容器就会自己选择顺序来加载。
 

第十二章 - Ajax

一、 什么是Ajax

Ajax是几个单词首字母的缩写:Asynchronous(异步的) JavaScript And Xml。Ajax并不是一种全新的技术,而是整合了几种现在的技术:JavaScript、XML和CSS。主要是JavaScript,我们通过JavaScript的XMLHttpRequest对象完成发送请求到服务器并获得返回结果的任务,然后使用JavaScript更新局部的网页,异步指的是,JavaScript脚本发送请求后并不是一直等着服务器的响应数据。XML一般用于请求数据和响应数据的封装,CSS用于美化页面样式。

二、 XMLHttpRequest

1、 XMLHttpRequest的常用方法

Open(method,URL,async):  建立于服务器的连接,method参数指定请求的HTTP方法;URL参数指定请求的地址;async参数指定是否使用异步请求,其值为true或false。

Send(conetent):  发送请求,content参数指定请求的参数。

SetRequestHeader(header,value):  设置请求的头信息。

2、 XMLHttpRequest的常用属性

Onreadystatechange:  指定XMLHttpRequest对象的回调函数。

ReadyState:  XMLHttpRequest的状态信息

  0 表示已经创建一个对象,但还没初始化

  1 表示对象开始发送信息

  2 表示对象的请求发送完成

  3 对象开始读取响应

  4 对象读取响应结束
 

   Status HTTP的状态码,仅当ReadyState的值为3或4时,status属性才能使用

         200 服务器响应正常

         400 无法找到请求的资源

         403 没有访问权限

         404 访问的资源不存在

         500 服务器内部错误
 

 ResponseText:  获得响应的文本信息

 ResponseXML:  获得响应的XML文档对象

三、 使用Ajax技术实现异步的步骤

1、 创建XMLHttpRequest对象。

2、 通过XMLHttpReuqest对象设置请求信息。

3、 向服务器发送请求。

4、 创建回调函数,当XMLHttpRequest对象状态改变时,根据响应状态动态更新页面。

四、 Ajax的工作过程

1、 通过XMLHttpRquest对象向服务器发送信息。

2、 使用XMLHttpRequets对象解析服务器响应数据

3、 通过JavaScript脚本动态更新页面

举例

function doAjax() {

createXMLHttpRequest();

var name = document.getElementById("uname").value;

var pwd = document.getElementById("upwd").value;

if(XMLHttp!=null){

var url ="LoginServlet?uname="+name+"&upwd="+pwd; 

XMLHttp.open("POST",url,true);

XMLHttp.setRequestHeader("Content-Type",

"application/x-www-form-urlencoded;");

XMLHttp.onreadystatechange=processRequest;

XMLHttp.send(null);

}else{

alert("不能创建XMLHttpRequest对象实例")

}

}



function processRequest() {

var messdiv = document.getElementById(“mess”);

if (xmlhttp.readyState == 4)

if (xmlhttp.status == 200) {

//responseText表示请求完成后,返回的字符串信息 if (xmlhttp.responseText == "false")

messdiv.innerHTML = "用户名可以使用";else

messdiv.innerHTML = "用户名已被使用"; } else {

alert("请求处理返回的数据有错误");

}

}

}

重点:Servlet
一、Servlet三个要素

1.必须继承自HttpServlet
2.必须实现doGet()或者doPost()
3.必须在web.xml中配置Servlet

例:
 

<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern></url-pattern>
</servelt-mapping>

函数:

HttpServeltRrequest:请求对象
getParameter():获得表单元素的值
getAttribute():获得request范围中的属性值
setAttribute():设置reqeust范围中的属性值
setCharacterEncoding():设置字符编码
HttpSerletResponse:相应对象
sendRedirect():外部跳转
getWriter():获得输出流对象
setContentType("text/html; charset=utf-8"):设置相应内容格式和编码

二、四种回话跟踪方式

1.Session
HttpSession session = request.getSession();
session.setAttribute("name", "zhangsan");
session.setAttribute("pwd", "aaa");
String name = (String) session.getAttribute("name");
 
2.cookie:
//创建Cookie
Cookie cookie = new Cookie("name", "zhangsan");
//设置Cookie的超时时间
cookie.setMaxAge(24 * 60 * 60 *60);
//把Cookie发送到客户端
response.addCookie(cookie);
 
//得到客户端发送的Cookie
Cookie [] cookies = request.getCookies();
for(int i=0; i<cookies.length; i++) {
  Cookie temp = cookies[i];
  String key = temp.getName();
  String value = temp.getValue();
}
 
3.隐藏表单域
<input type="hidden" name="name" value="zhangsan" />
request.getParameter("name");
 
4.Url重写
问号传参
LoginServlet?username=zhangsan&pwd=123
String name = request.getParameter("username");
String pwd =request.getPareameter("pwd");


 

内部跳转和外部跳转

内部跳转:
LoginServlet
request.getRequestDispatcher("index.jsp").forward(request, resposne);
外部跳转:
response.sendRedirect("index.jsp");
内部跳转是一次请求和一次响应
外部跳转是两次请求和两次响应
ServletContext:Servlet上下文对象
它是一个公共区域,可以被所有的客户端共享
setAttribute():向公共区域里放入数据
getAttribute():从公共区域里取数据
 
三个标准范围:request, session, ServletContext
  共同点:都有setAttribute(), getAttribute()
  区别:范围不同,request < session < servletContext
服务器上的五大对象
  request, response, servlet, session, servletContext

过滤器

生命周期:
1.实例华:
2.初始化:init()
3.过滤:doFilter()
4.销毁:destroy()
5.不可用

 

配置

<filter>
<filter-name></filter-name>
<filter-class></filter-class>
</filter>
<filter-mapping>
<filter-name></filter-name>
<url-pattern></url-pattern>
</filter-mapping>

 

几个重要的接口

1.Filter:init(), doFilter(), destroy()
2.FilterChain: doFilter(request, response)
3.FilterConfig:getFilterName(), getInitParameter(),

过滤器链

--->1--->2--->3--->Servlet 请求

<----1<---2<---3<--- 响应

MvC设计模式

1.ModelI:jsp+JavaBean
2.ModelII:jsp+Servlet+JavaBean
  jsp---view
  servlet---control
  javabean---model
 
MVC:
M--Model:模型:访问后台数据库
V--view:视图:展示
C--control:控制器:控制程序流程
 
ModelII和MVC的关系:
MVC是一种设计模式,ModelII它是MVC的一种具体的实现

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/WilliamChancwl/article/details/84866783

智能推荐

什么是内部类?成员内部类、静态内部类、局部内部类和匿名内部类的区别及作用?_成员内部类和局部内部类的区别-程序员宅基地

文章浏览阅读3.4k次,点赞8次,收藏42次。一、什么是内部类?or 内部类的概念内部类是定义在另一个类中的类;下面类TestB是类TestA的内部类。即内部类对象引用了实例化该内部对象的外围类对象。public class TestA{ class TestB {}}二、 为什么需要内部类?or 内部类有什么作用?1、 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。2、内部类可以对同一个包中的其他类隐藏起来。3、 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。三、 内部类的分类成员内部_成员内部类和局部内部类的区别

分布式系统_分布式系统运维工具-程序员宅基地

文章浏览阅读118次。分布式系统要求拆分分布式思想的实质搭配要求分布式系统要求按照某些特定的规则将项目进行拆分。如果将一个项目的所有模板功能都写到一起,当某个模块出现问题时将直接导致整个服务器出现问题。拆分按照业务拆分为不同的服务器,有效的降低系统架构的耦合性在业务拆分的基础上可按照代码层级进行拆分(view、controller、service、pojo)分布式思想的实质分布式思想的实质是为了系统的..._分布式系统运维工具

用Exce分析l数据极简入门_exce l趋势分析数据量-程序员宅基地

文章浏览阅读174次。1.数据源准备2.数据处理step1:数据表处理应用函数:①VLOOKUP函数; ② CONCATENATE函数终表:step2:数据透视表统计分析(1) 透视表汇总不同渠道用户数, 金额(2)透视表汇总不同日期购买用户数,金额(3)透视表汇总不同用户购买订单数,金额step3:讲第二步结果可视化, 比如, 柱形图(1)不同渠道用户数, 金额(2)不同日期..._exce l趋势分析数据量

宁盾堡垒机双因素认证方案_horizon宁盾双因素配置-程序员宅基地

文章浏览阅读3.3k次。堡垒机可以为企业实现服务器、网络设备、数据库、安全设备等的集中管控和安全可靠运行,帮助IT运维人员提高工作效率。通俗来说,就是用来控制哪些人可以登录哪些资产(事先防范和事中控制),以及录像记录登录资产后做了什么事情(事后溯源)。由于堡垒机内部保存着企业所有的设备资产和权限关系,是企业内部信息安全的重要一环。但目前出现的以下问题产生了很大安全隐患:密码设置过于简单,容易被暴力破解;为方便记忆,设置统一的密码,一旦单点被破,极易引发全面危机。在单一的静态密码验证机制下,登录密码是堡垒机安全的唯一_horizon宁盾双因素配置

谷歌浏览器安装(Win、Linux、离线安装)_chrome linux debian离线安装依赖-程序员宅基地

文章浏览阅读7.7k次,点赞4次,收藏16次。Chrome作为一款挺不错的浏览器,其有着诸多的优良特性,并且支持跨平台。其支持(Windows、Linux、Mac OS X、BSD、Android),在绝大多数情况下,其的安装都很简单,但有时会由于网络原因,无法安装,所以在这里总结下Chrome的安装。Windows下的安装:在线安装:离线安装:Linux下的安装:在线安装:离线安装:..._chrome linux debian离线安装依赖

烤仔TVの尚书房 | 逃离北上广?不如押宝越南“北上广”-程序员宅基地

文章浏览阅读153次。中国发达城市榜单每天都在刷新,但无非是北上广轮流坐庄。北京拥有最顶尖的文化资源,上海是“摩登”的国际化大都市,广州是活力四射的千年商都。GDP和发展潜力是衡量城市的数字指...

随便推点

java spark的使用和配置_使用java调用spark注册进去的程序-程序员宅基地

文章浏览阅读3.3k次。前言spark在java使用比较少,多是scala的用法,我这里介绍一下我在项目中使用的代码配置详细算法的使用请点击我主页列表查看版本jar版本说明spark3.0.1scala2.12这个版本注意和spark版本对应,只是为了引jar包springboot版本2.3.2.RELEASEmaven<!-- spark --> <dependency> <gro_使用java调用spark注册进去的程序

汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用_uds协议栈 源代码-程序员宅基地

文章浏览阅读4.8k次。汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用,代码精简高效,大厂出品有量产保证。:139800617636213023darcy169_uds协议栈 源代码

AUTOSAR基础篇之OS(下)_autosar 定义了 5 种多核支持类型-程序员宅基地

文章浏览阅读4.6k次,点赞20次,收藏148次。AUTOSAR基础篇之OS(下)前言首先,请问大家几个小小的问题,你清楚:你知道多核OS在什么场景下使用吗?多核系统OS又是如何协同启动或者关闭的呢?AUTOSAR OS存在哪些功能安全等方面的要求呢?多核OS之间的启动关闭与单核相比又存在哪些异同呢?。。。。。。今天,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCXrdI0k-1636287756923)(https://gite_autosar 定义了 5 种多核支持类型

VS报错无法打开自己写的头文件_vs2013打不开自己定义的头文件-程序员宅基地

文章浏览阅读2.2k次,点赞6次,收藏14次。原因:自己写的头文件没有被加入到方案的包含目录中去,无法被检索到,也就无法打开。将自己写的头文件都放入header files。然后在VS界面上,右键方案名,点击属性。将自己头文件夹的目录添加进去。_vs2013打不开自己定义的头文件

【Redis】Redis基础命令集详解_redis命令-程序员宅基地

文章浏览阅读3.3w次,点赞80次,收藏342次。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。当数据量很大时,count 的数量的指定可能会不起作用,Redis 会自动调整每次的遍历数目。_redis命令

URP渲染管线简介-程序员宅基地

文章浏览阅读449次,点赞3次,收藏3次。URP的设计目标是在保持高性能的同时,提供更多的渲染功能和自定义选项。与普通项目相比,会多出Presets文件夹,里面包含着一些设置,包括本色,声音,法线,贴图等设置。全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,主光源和附加光源在一次Pass中可以一起着色。URP:全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,一次Pass可以计算多个光源。可编程渲染管线:渲染策略是可以供程序员定制的,可以定制的有:光照计算和光源,深度测试,摄像机光照烘焙,后期处理策略等等。_urp渲染管线