jsp学习日志

时间:2024.4.13

JDBC

使用eclipse连接数据库:window——show view——data Source Exploer

JDBC API常用接口

DriverManager              负责加载各种不同驱动程序(Driver),并根据相应的请求,向调用者返回相应的数据库连接(Connection)

Driver                     驱动程序,会将自身加载到DriverManager中去,处理相应的请求并返回相应的数据库连接(Connection)

Connection                 数据库连接,负责与数据库通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。可以产生用以执行SQL的Statement

Statement                  用以执行SQL查询和更新(针对静态SQL语句和单次执行)

PreparedStatement          用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)

CallableStatement          用以调用数据库中的存储过程

ResultSet                  表示数据库结果集的数据表,通常通过执行查询数据库的语句生成

ResultSetMetaData          可用于获取关于ResultSet对象中列的类型和属性信息的对象

JDBC连接数据库  

?创建一个以JDBC连接数据库的程序,包含7个步骤:  

 1、加载JDBC驱动程序:  

    在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),  

    这通过java.lang.Class类的静态方法forName(String  className)实现。  

    例如:  

    try{  

    //加载MySql的驱动类  

    Class.forName("com.mysql.jdbc.Driver") ;  

    }catch(ClassNotFoundException e){  

    System.out.println("找不到驱动程序类 ,加载驱动失败!");  

    e.printStackTrace() ;  

    }  

   成功加载后,会将Driver类的实例注册到DriverManager类中。  

 2、提供JDBC连接的URL  

   ?连接URL定义了连接数据库时的协议、子协议、数据源标识。  

    ?书写形式:协议:子协议:数据源标识  

    协议:在JDBC中总是以jdbc开始  

    子协议:是桥连接的驱动程序或是数据库管理系统名称。  

    数据源标识:标记找到数据库来源的地址与连接端口。  

    例如:(MySql的连接URL)  

    jdbc:mysql:  

        //localhost:3306/test?useUnicode=true&characterEncoding=gbk ;  

   useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为  

   gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。  

 3、创建数据库的连接  

    ?要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,   

     该对象就代表一个数据库的连接。  

    ?使用DriverManager的getConnectin(String url , String username ,   

    String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和  

     密码来获得。  

     例如:  

     //连接MySql数据库,用户名和密码都是root  

     String url = "jdbc:mysql://localhost:3306/test" ;   

     String username = "root" ;  

     String password = "root" ;  

     try{  

    Connection con =   

             DriverManager.getConnection(url , username , password ) ;  

     }catch(SQLException se){  

    System.out.println("数据库连接失败!");  

    se.printStackTrace() ;  

     }  

 4、创建一个Statement  

    ?要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3 

     种类型:  

      1、执行静态SQL语句。通常通过Statement实例实现。  

      2、执行动态SQL语句。通常通过PreparedStatement实例实现。  

      3、执行数据库存储过程。通常通过CallableStatement实例实现。  

    具体的实现方式:  

        Statement stmt = con.createStatement() ;  

       PreparedStatement pstmt = con.prepareStatement(sql) ;  

       CallableStatement cstmt =   

                            con.prepareCall("{CALL demoSp(? , ?)}") ;  

 5、执行SQL语句  

    Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate  

   和execute  

    1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句  

        ,返回一个结果集(ResultSet)对象。  

     2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或   

        DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等  

     3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的  

        语句。  

   具体实现的代码:  

          ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;  

    int rows = stmt.executeUpdate("INSERT INTO ...") ;  

    boolean flag = stmt.execute(String sql) ;  

 6、处理结果  

    两种情况:  

     1、执行更新返回的是本次操作影响到的记录数。  

     2、执行查询返回的结果是一个ResultSet对象。  

    ? ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些  

      行中数据的访问。  

    ? 使用结果集(ResultSet)对象的访问方法获取数据:  

     while(rs.next()){  

         String name = rs.getString("name") ;   //传递列名

    String pass = rs.getString(1) ; // 此方法比较高效   按照列号排列

     }  

(列是从左到右编号的,并且从列1开始)  

Rs.getXXX()的方法,XXX取决于列名的数据类型

 7、关闭JDBC对象   

     操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声  

     明顺序相反:  

     1、关闭记录集  

     2、关闭声明  

     3、关闭连接对象  

          if(rs != null){   // 关闭记录集  

        try{  

            rs.close() ;  

        }catch(SQLException e){  

            e.printStackTrace() ;  

        }  

          }  

          if(stmt != null){   // 关闭声明  

        try{  

            stmt.close() ;  

        }catch(SQLException e){  

            e.printStackTrace() ;  

        }  

          }  

          if(conn != null){  // 关闭连接对象  

         try{  

            conn.close() ;  

         }catch(SQLException e){  

            e.printStackTrace() ;  

         }  

          } 

存储过程:

Create procedure test

Call  test (1,@inf):调用存储过程

JDBC 调用存储过程:

CallableStatement cs=conn.prepareCall(“call test(?,?)”);

Cs.setInt(“id”(参数名),1);

Cs.registerOutParameter(“inf”,Types.VARCHAR);//获取第二个问号的参数,参数名及参数类型

Cs.execute();

批处理:

事务:

注入攻击:

Select * from test where username=”yulong” and password=”123 or 1=”1”;

的结果和Select * from test where username=”yulong” and password=”123相同

防范注入攻击:

String sql=”insert into test values (?,?,?);

PrepareStatement ps=conn.prepareStatement(sql);

Ps.setInt(1,8);

Ps.setString(“name”,”yuling”);

Ps.setString(“password”,”123”);

Ps.executeUpdate();

参数的值用?表示,然后给?赋值。

连接池:

享元模式:预先定义好的对象,可以多人使用

数据源:存有许多连接的连接池  dataSource   通过数据源去访问数据库,由数据源来决定具体使用哪个连接。

      Tomcat创建数据源    将数据库驱动加入到tomcat的lib中。

     

       在web.xml文件中配置<resource-ref>

properties文件:键值对   存储常用的值,不必重复的书写

java的类反射机制:

通过对象获取所有类的信息   Class.forName();

Modifier:所有通过类反射获取的信息的权限修饰符

Fields:用与存储类信息中的成员变量

getDeclaredFields:返回Class实例所代表的类的成员变量

getDeclaredMethods():;返回Class实例所代表的类的所有方法

调用私有的成员变量或方法:

先获取,后调用setAccessible(true)屏蔽权限修饰符

Web开发的特点(B/S):

constructor:存储类信息的构造方法

getConstructors();返回Class实例所代表的类的构造方法

method:存储类信息的所有方法

1.       b/s对客户端要求低,有利于项目的升级和维护。

2.       Web项目可以跨平台。

3.       界面不怎么好。Html+js+css    extJS   Flex可解决简陋的问题。

4.       对网络的依赖较大。

Web开发的常用技术:Jsp  AspNET   PHP

JSP:java在网络中的应用的    开源的  跨平台 

(QQ是装在客户端的,它的升级需要客户手动下载软件,而网易只要通过浏览器就可以访问,升级,更新等在服务器端操作。c/s在不同的操作系统上需要研发不同的客户端软件才能使用,而b/s只要有浏览器和网络即可。)

Javaweb

定义:javaweb 由一组Servlet、html、类及其它被绑定的资源构成。它可以在各种供应商提供的实现Servlet规范的Servlet容器中运行

Java代码写在<%    %>中

创建第一个web应用程序:

Web项目——WEB-INF——classes——带有包文件夹的class文件

                     ——lib

                     ——web.xml

        ——jsp文件

        ——html文件

        ——图片……..

将文件放到tomcat的webapps目录下,启动tomcat服务器运行。

配置虚拟目录:

在tomcat下  conf下server.xml文件中设置Content元素。

操作中的错误:

Class文件要带着包的文件夹一起放到classes文件夹下。

用eclipse开发web项目:

Window——show view——other——java——package explorer

Window——show view——other——server——tomcat6——导入tomcat地址

New——deymamic  web project

设置默认路径:项目右击——build Path——Source——Default output folder设置到classes下

设置捷径:shortcuts

Window——Customize Perspective——shortcuts

基本操作:

将一段代码引入到try    catch语句内:

选中语句——右击——surround with——try catch  block  

JSP               

1.why:jsp是Servlet编写技术。它是在html语句中混合java代码,只对网页中要动态产生的内容采用java代码来编写,对固定不变的的静态内容采用普通的html语句编写。

2.

3.jsp页面可以放在除了WEB_INF及其子目录外的其它任何目录。

4. jsp页面的运行原理:jsp本质上是一个Servlet

  每个jsp页面在第一次访问时,jsp引擎将它翻译成一个Servlet源程序,再编译成Servlet的class文件。再由web容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由jsp页面翻译成的Servlet程序。   

5.jsp 页面的隐含变量:没有声明就可以使用的对象,jsp页面共有9个隐含对象。

 Publicvoid_jspServlet(HttpServletRequest,HttpServletResponse)throws java.io.IOException,ServletException{

PageContext  pageContext=null;

HttpSession  session=null;

ServletContext application=null;

ServletConfig config=null;

JspWriter out=null;

Object page=this;

1.request:HttpServlet的一个对象

2.response:HttpServlet的一个对象(在jsp页面中几乎不调用response的任何方法)

3.pageContext:页面的上下文,是pageContext的对象。可以从该对象中获取其它8个隐含对象。也可以获取当前页面的其它信息(学习自定义标签时使用它。)

4.session:代表浏览器和服务器之间的一次会话,是HttpSession的一个对象。

5.application:代表当前web应用,是ServletContext对象。

6.config:当前jsp对应的Servlet的ServletConfig对象(几乎不用)

7.out:JspWriter对象,调用out.println()可以直接把字符串打印到浏览器上。

8.page:指向当前jsp对应的Servlet对象的引用,是Object类型,只能调用Object类的方法(几乎不使用)

9.exception:只有在声明了page指令的isErrorPage=”true时,才可以使用。

对属性作用域的范围的从小到大:pageContext,request,ession,application

使用<% %> 编写的代码在此位置,可以用到request,response,pageContext,session,application,config,out,page这8个隐含对象。(还可以使用exception隐含对象)

模板元素

定义:jsp页面中的静态html内容。

更改jsp页面中的编码方式:window——输入jsp——JSP  Fles——该为UF8

Jsp中的输出语句:<%=   %>

Jsp脚本片段是嵌套在<% %>之间的java代码。

Jsp中的注释:<%-- jsp注释 --%>  <!—html注释  -->

两个注释的区别:jsp注释可以阻止java代码的执行。而html注释不可以。

和属性相关的方法:

1.方法:

Object getAttribute(String name):获取指定的属性

Enumeration getAttributeNames():获取所有属性名组成的Enumeration对象。

RemoveAttribute(String name):删除指定的属性

Void setAttribute(String name,Object o):设置属性

2.pageContext,request,session,application对象都有上述四个方法。这四个对象也称为域对象。

pageContext:作用于当前页面

Request:作用于同一个请求(在有转发的情况下可以跨页面获取属性值)

Session:作用于一次会话:浏览器从打开到关闭称为一次会话。(前提:会话不失效)

Application:作用于当前web应用程序,属性的作用范围最大,只要在一处设置属性,在其它各处的jsp或Servlet中都可以获取到。

2s后跳转到login页面:Response.setHeader(“refresh”,”2 url=”login.jsp”);

请求重定向与请求转发

相同点:两者请求的结果是相同的

本质区别:

请求的转发:只发出了一次请求,

重定向:发出了两次请求,

具体分析:

1. 请求的转发:地址栏是初次发出的地址   服务器将请求转发到其他的服务器资源

重定向:地址栏不再是初次发出的请求地址,地址栏为最后响应的地址

2. 请求的转发:在最终的Servlet中,request对象和中转的那个request对象是同一个对象

重定向:在最终的Servlet中,request对象和中转的那个request对象不是同一个对象

3. 请求的转发:只能转发给当前web应用的资源

重定向:可以重定向到任何资源。百度什么的

4.请求的转发:/ 代表当前web应用的根目录

   重定向:/ 代表当前web站点的根目录

5.请求的转发代码:

RequestDispatcher接口

1.调用HttpServletRequest的getRequestDispatcher()方法获取RequestDispatcher对象

  调用getRequestDispatcher()需要传入转发的地址

  2.调用httpServlet的forward(request,response)进行请求转发

  */

 String path="testServlet";

 RequestDispatcher rd=request.getRequestDispatcher("/"+path);

rd.forward(request,response);

请求的重定向代码:

 String path="testServlet";

response.sendRedirect(path);   

注:当前web应用的目录:http://localhost:8080/r141028/

    站点的根目录:http://localhost:8080/   

参数是由浏览器发送到服务器时 表单中的信息,用getParameter() 获取

在服务器内部设置参数和获取参数时,用setAttribute(),和getAttribute()

Jsp指令

在目前jsp 2.0中,page   include    taglib指令

Page指令

<%@ page

langue=”java”

Extends=”package.class”  被编译成servlet类时要继承的类

Session=”false”   此时当前页面不可以使用session的隐藏变量,不生成HttpSession对象

iserrorPage=”true’    指定当前页面是否为错误处理页面,可以使用exception对象,此时不建议直接访问该页面

import=“java.util.Date”

errorPage=”/error.jsp”    指定当前页面出现错误时的响应页面,响应该页面时,jsp引擎使用了请求转发的方式。

contentType=”text/html;charset=gb2312”     当前页面的响应类型,charset指定返回页面的字符编码

pageEncoding=”uf8”      指定当前页面的字符编码,一般和charset的值一致。

isElgnored=“true”     指定当前页面是否可以使用EL表达式

%>

如何让用户不能直接访问某个页面:

对于Tomcat服务器,WEB-INF下的文件不能通过在浏览器中直接输入地址的方式来访问页面的,但通过请求的转发是可以访问的。

errorPage=”…/WEB-INF/error.jsp”

<%@ page contentType=”application/msword”%>以word文档的格式响应

可以在web.xml文件中配置错误页面

Include指令

静态包含:先包含再翻译    生成一个servlet源文件

<%@ include file=”b.jsp”>

File属性的设置值用相对路径:

若以/开头,表示相对于当前web应用程序的根目录,否则表示相对于当前文件。

jsp:include标签

有子标签:jsp:param

动态包含:先翻译再包含     生成两个servlet源文件

<jsp:include page=”b.jsp”></jsp:include>

Include指令和jsp:include标签的区别:

<jsp:include>标签:是在当前jsp页面执行期间插入被引入资源的输出内容,被静态引入的资源必须是一个能独立被web容器调用和执行的资源。

Include指令:只能引入遵循jsp格式的文件,被引入文件与当前jsp文件共同被翻译成一个Servlet的源文件

<jsp:include page="/include2/b.jsp">

<jsp:param value="include" name="username"/>

</jsp:include>

接收参数

<%=request.getParameter("username") %>

Jsp:forward标签     请求转发

有子标签:jsp:param

<jsp:forward page="/include/b.jsp">

<jsp:param value="include" name="username"/>

</jsp:forward>

<!-- 作用相同 -->

<%

request.getRequestDispatcher("/include/b.jsp").forward(request, response);

%>

关于中文乱码问题

1.在jsp页面中输入中文,请求页面后不出现乱码

contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"

charset和pageEncoding的编码一致,且都支持中文,一般用UTF-8

浏览器的显示字符编码和  请求的jsp页面的编码一致。

 

2.获取中文参数值:默认参数在传输过程中使用的编码为ISO-8859-1

1)对于post请求,在获取请求信息之前(在调用request.getParameter或者是request.getReader等),调用以下方法

request.setCharacterEncoding("UTF-8");

2)对于get请求,前面的方式无效。可以修改Tomcat的server.xml文件

参照http://localhost8080/docs/config/index.html文档的useBodyEncodingForURI属性为Connector节点添加useBodyEncodingForURI=“true”属性

<Connector connectionTimeout=”20000” port=”8080” protocol=”HTTP/1.1” redirectPort=”8443”  useBodyEncodingForURI=“true”>

----- response.setContentType("text/html;charset=GBK");

       //解决post方式提交内容的乱码

       //一定要写在存取第一个参数之前

       request.setCharacterEncoding("GBK");

Cookie

用户通过浏览器第一次发送请求时,服务器在用户的机器上存储Cookie文件

Cookie的发送:

1.  创建Cookie对象

2.  2.设置Cookie存在的最大时效

3.  将Cookie放入到http响应报头

Cookie在浏览器的内存中,用户退出浏览器后被删除

若希望浏览器将Cookie存储在磁盘上,用maxAge,以秒为单位,maxAge=0 使浏览器删除该cookie

会话Cookie和持久Cookie的区别:

会话Cookie:保存在内存中   不设置过期时间  生命周期为浏览器的会话期间   关闭浏览器窗口,cookie消失

持久Cookie:保存在硬盘上   设置过期时间    关闭浏览器后再次打开,cookie仍然有效直到超过设定的过期时间。

存储在硬盘上的cookie可以在不同的浏览器进程间共享,不如IE的两个窗口,保存在内存中的cookie额,不同的浏览器有不同的处理方式

Cookie :

1.  是完成会话跟踪的机制,采用了在客户端保持http状态的方案;

2.  Cookie是在浏览器访问服务器的某个资源时,由web服务器在http响应消息头中附带传送给浏览器的一个小文本本件;

3.  一旦服务器在浏览器上保存了某个Cookie,浏览器在以后的访问中,都会在http请求头中将这个Cookie传递给服务器。

4.  底层的实现原理:web服务器通过在http响应消息中增加Set-cookie响应头字段将Cookie信息发送给浏览器,浏览器通过在http请求消息中增加Cookie请求头字段将Cookie回传给服务器。

2.Cookie相关的API:

11.向客户端浏览器写入Cookie

  Cookie cookie=new Cookie(“name”  “sss”);//创建Cookie对象,Cookie是键值对的形式

  Cookie.setMaxAge(30);//设置Cookie存在的最大时效,0,表示立即删除该Cookie,负数,表示不存储该cookie。正数,表示该Cookie存在的时间

 Cookie.setPath(request.getContextPath());//设置Cookie的作用范围

:可作用当前目录和当前子目录,但不能作用于当前目录的上一级目录。

  Response.addCookie();//将Cookie传到客户端

12.从浏览器获取Cookie

   Cookie [] cookies=request.getCookies();

  If(Cookies!=null&&cookies.length>0){

 For(Cookie cookie:cookies){

Out.print(cookie.getName()+”:”+cookie.getValue());

}

}

应用:自动登录   显示浏览过的商品信息

session会话

在服务器端创建session,将sessionID保存在客户端的session Cookie里,客户端和服务器端都有session

用来在客户端和服务器端之间保存状态

当客户端向服务器第一次发送请求时,服务器端会创建一个session,并将sessionID返回给客户端存到session Cookie中,当客户端再次向浏览器发送请求时,连带将sessionCookie中存储的sessionID发送给服务器,如果服务器中有一个SessionID可以与之匹配,则表明是一个会话,服务器认识这个浏览器。

由于sessionCookie是存储在浏览器内存中的,浏览器关闭sessionID也消失,即使服务器中的session存在,这个会话也结束。

浏览器中的sessionID存在,但是超过了服务器中session的过期时间。会话结束

1.  HttpSession:在服务器端保持http状态信息的方案,和其对应的是Cookie

2.  2产生httpSession对象的过程

Session的生命周期:

1.  何时创建httpSession对象

11.当浏览器访问服务器的任何一个Jsp或者Servlet时,服务器都会创建一个HttpSession对象,对吗?不一定。

对于jsp:1.如果客户端第一次访问某个Jsp,且jsp页面中的page标签指定的session属性为false,此时服务器不会创建HttpSession对象;

2.如果当前Jsp不是客户端第一个访问的,而是由其它页面跳转过来的,且前面访问的其它页面已经创建了一个HttpSession对象,则当前页面会返回一个会话的ttpSession对象,不会再另外创建对象了。

对于Servlet:如果客户端第一次访问某个Servlet ,该Servlet只有在调用了request.getSession()或request.getSession(true)时才会创建HttpSession对象。

2. Session=”false”:表示当前页面禁用Session隐含变量,但可以使用其他的显示的HttpSession变量。

3.在Servlet中如何获取HttpSession对象?

  Request.getSession(Boolean create):

Create为false:若没有和当前jsp页面关联的HttpSession对象,则返回null,若有,返回true。

Create为true:一定返回一个HttpSession对象,若没有和jsp页面关联的HttpSession对象,则服务器创建一个新的HttpSession对象并返回。若有直接返回。

何时销毁HttpSession对象?

1.直接调用HttpSession的invalidate()方法:该方法使HttpSession失效。

2.服务器卸载了当前web应用

3.超出HttpSession的过期时间。

注:关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器的session对象失效。

>>设置HttpSession的过期时间:

session.setMaxInactiveInterval(5);单位是秒。

  >>在web.xml文件中设置HttpSession的过期时间:单位是分

<session-config>

     <session-timeout>30</session-timeout>

</session-config>  

并不是关闭了浏览器就销毁了HttpSession。

Session中最重要的方法:

获取session对象:request.getSession()  request.getSession(boolean create)

属性相关的:setAttribute  getAttribute  removeAttribute

使httpSession失效的:Invalidate()

设置最大时效:setMaxInactiveInterval()

setAttribute和getAttribute

获取session:

HttpSession session=request.getSession(true);//true表示有session就用,没有就新创建

session.getID();//获取sessionID

session过期:浏览器的内存中sessionID还存在,但是服务器内存中的session已经被删除

            服务器中的session存在,但是浏览器已关。

url重写实现Session跟踪

定义:将会话标识号以参数形式附加在超链接的url的值后面的技术。

在浏览器不支持Cookie或者关闭了Cookie功能的情况下,web服务器还能与浏览器实现有状态的会话,就必须对所有可能被客户端访问的请求路径进行url重写。

HttpServletResponse接口中定义的用于完成url重写的方法:

encodeURL方法    encodeRedirectURL方法

<a href="<%= response.encodeURL("login.jsp") %>">重新登录</a>

路径问题


Javaweb中的绝对路径:相对于当前web应用的根路径的路径,即在路径前必须带上contextPath。

Http://localhost:8080/contextPath(当前web应用的上下文路径)/a.jsp

http://localhost:8080/a.jsp   不是绝对路径

javaweb中的“/”代表什么?

当前web应用的根路径:http://localhost:8080/contextPath/

 若“/”交由Servlet容器来处理

1.  请求转发时:request.getRequestDispatcher(“/path/b.jsp“).forward(request,response);

2.  web.xml文件中映射的Servle。。。。。。。  。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        t路径

<servlet-mapping>

<servlet-name>TestServlet</servlet-name>

<url-pattern>/testServlet<url-pattern>

   </servlet-mapping>

Web站点的根路径:http://localhost:8080/

若“/”交由浏览器来处理

1.  超链接:<a href=“<%= request.getContextPath() %>/testServlet”>b.jsp</a>

2.  表单中的action:<form action=”/login.jsp”>

3.  请求重定向:response.sendRedirect(“request.getContextPath()/path/b.jsp);

如何编写绝对路径:

1.  若“/”代表当前站点的根目录,在斜杠前面加上contextPath。contextPath可以由request.getContextPath()来获取。

<a href=“<%= request.getContextPath() %>/testServlet >a.jsp</a>

<form action=” <%= request.getContextPath() %>/login.jsp”>

response.sendRedirect(“request.getContextPath()/path/b.jsp);

2. 若“/”代表当前web应用的根目录,则直接写绝对路径就可以了。

通过重定向服务器返回给浏览器的是url值。

需求:用Cookie显示最近浏览的5本书的title

     Book.jsp  显示最近浏览的5本书

                获取所有的Cookie

                若CookieName==ATGUIGU_BOOK_开头,符合条件

                显示CookieValue

    Book.jsp  将数的信息以Cookie方式传递给浏览器,删除一个Cookie

              确定要被删除的Cookie ATGUIGU_BOOK_开头的Cookie数量>=5,若从book.jsp页面传入的book不在ATGUIGU_BOOK_的Cookie中,则删除ATGUIGU_BOOK_数组的第一个Cookie,若在其中,则删除该Cookie

javaBean

1.  用作javabean的类必须有一个公共的无参的构造方法。

2.  javabean的属性是以方法定义的形式出现的。而不是类中的成员变量。

即是Get和set方法名字后的内容

setName(){}。Property为name.

Javabean在jsp中的应用

Javabean必须存放在包中

<jsp:useBean id >标签 

<jsp:setProperty property=””> 

value和param不可同时出现  传递的参数名需和property相同,若不相同,可以用param接收

<jsp:getProperty>标签

El表达式

El(Expression Language):

语法:${ }

例:${sessionScope.user.sex}:从session范围中取得用户的性别。

    以前的写法:

     User user=(User)session.getAttribute(“user”);

     String sex=user.getSex();

例:age:${sessionScope.customer.age}

   等价于:

   Customer customer=(Customer)session.getAttribute(“customer”);

   Out.print(customer.getAge());

例:name:${sessionScope[“com.con”].name}  com.con为session的键

   如果域对象中的属性名带有特殊字符,则使用[]会很方便。

El变量:${name}

    取出某一范围中名称为name的变量,按照从小到大的范围去找。Page。request。session。Application的顺序。若途中找到,则直接返回,不再找下去,若全部范围都没有找到,则返回null.

例:${customer.age}:从四个范围中依次寻找

El可以自动进行类型转换

在客户端使用javascript防止二次提交:

将表单中的提交按钮设置为按钮,用onclick调用js方法

在服务器端防止二次提交:

接收参数:String getParameter()

   String [] getParameterValues()

         String  getAttribute()

11个el隐含对象:                      

1.  PageContext:

与 范围有关的隐含对象:

2.  PageScope:

3.  RequestScope:

4.  sessionScope:

5.  applicationScope

与 输入有关的隐含对象:

6.  param:如同ServletRequest.getParameter(String name),获取String类型的值

7.  paramValues:如同ServletRequest.getParameterValues(String name)返回String[]类型的值

8.  header:如同ServletRequest.getHeader(String name),返回String类型的值

9.  headerValues: 如同ServletRequest.getHeaders(String name),返回String[]类型的值

10. cookie:如同HttpRequest.getCookies()

11. initParam:如同ServletContext。getInitParameter(String name),返回String类型的值。

Jstl的使用:下载jstl的jar包,将其中的standard.jar和jstl.jar放到lib下。

更多相关推荐:
spss学习心得

学院:传播学院专业:10级广播电视新闻学学号:1290120xx023姓名:许咪咪学习SPSS有感——与EXCEL之比较在学习SPSS软件的过程中,自己不敢有丝毫松懈,但同时感到学习压力很大,有一定的学习难度,…

spss学习

近段时间以来我对SPSS110SPSS160AMOS160进行了较为系统的理论和技能的学习可以说受益匪浅咨将学习过程中的体会总结之如下一对SPSS而言可以说是一个十分强大的统计工具里面的任何一个菜单都可以完成诸...

spss实践个人总结表

数信系学生项目实训个人总结表数学与信息工程系20xx年日

spss总结

描述统计量主要是样本均值协方差和相关系数三个方面的计算样本均值反应了样本的集中趋势样本的协方差反应了样本的离散趋势样本的相关系数反应了两个变量现象的相关程度样本相关系数r的取值范围在1和1之间r的绝对值越大相关...

spss总结

1分组transformreordintodifferentvariables2Frequencies频数统计次数及比重annalysediscriptivestatisfrequency3统计多个变量人数用a...

实习总结spss

实习总结这次实习使用的是spss17.0版本的软件,通过这次实习,我了解到SPSS具有完整的数据输入、编辑、统计分析、图形制作等功能。平日课下进行统计调查技能培训的时候,分析数据所用的软件是Excel。虽然使用…

Spss章节总结

Spss章节总结第一章1SPSS的发展19xx年3位美国斯坦福大学的学生开发了最早的SPSS系统并基于这一系统于19xx年在芝加哥合伙成立了SPSS公司SPSS的基本功能包括数据管理统计分析图表分析输出管理等S...

预防医学spss软件总结

一Spss软件的特点功能强大能够完成多项功能包括建立数据库资料编辑统计分析统计表制作和统计图绘制理论上讲只要计算机硬盘和内存足够大SPSS可以处理任意大小的数据文件不限制变量个数和观测观察单位个数分析功能齐全几...

Photoshop新手系统学习规划

新手如何系统学习Photoshop多年工作经验总结出来的课程体系一基础部分01移动工具02矩形选框工具03椭圆选框工具04单行单列选框工具05套索工具06多边形套索工具07磁性套送工具08快速选择工具09调整边...

菜鸟如何学习ps,怎么快速学Photoshop

菜鸟如何学习ps怎么快速学Photoshop每个学习Photoshop的人都是从菜鸟开始学起的无论是多么了不起的大神亦是如此那么学习ps是不是就很简单呢其实不然学习一个新的软件如果没有人教你的话学起来的难度是非...

3Dmax,photoshop以及CAD的学习心得

3Dmaxphotoshop以及CAD的学习心得首先是CAD吧这是我最先学的软件在工程制图的基础上能够将图纸信息准确无误的标注在计算机中由于准确的数字输入和指令调整使多数大工程图纸得到COPY从而辅助3DMAX...

PhotoshopCS5基本工具学习总结

PhotoshopCS5基本工具学习总结快捷键A是路径选择工具和直接选择工具用来调整钢笔工具快捷键B是画笔工具在属性栏里可以对画笔工具进行设置快捷键C是裁剪工具和切片工具可以对图片进行相应的裁剪快捷键D是将背景...

spss学习总结(8篇)