当前位置:文档之家› Java_WEB(JSP Severlet)上课笔记

Java_WEB(JSP Severlet)上课笔记

http协议:访问 请求----->响应的过程 一问一答

http请求头 请求的方式,协议,URL 

http响应头



Web容器(服务中间件):
tomcat 开源的
WebLogic IBM
Resin
JBoss
WebSphere


下载安装tomcat

安装是1.输入administrator用户及密码
2.指定jre java的虚拟机
注:tomcat默认商品为8080端口,

查看当前主机端口的使用情况: netstat -a

tomcat的目录结构:
%tomcat_home%\bin 存放应用程序 启动,关闭脚本
%tomcat_home%\conf tomcat配置目录 context.xml server.xml tomcat-users.xml web.xml
%tomcat_home%\lib 存放所有项目都可以使用的jar包
%tomcat_home%\logs 存放tomcat日志
%tomcat_home%\webapps 存放所有项目
%tomcat_home%\work 所有jsp文件转换成class文件存放的地方



修改server.xml

修改目的:为了解决使用HTTP Get方法传递中文参数乱码的问题


修改context.xml
修改成
修改目的:当Web应用中的文件或者web.xml文件修改后,Tomcat服务器会自动重新加载当前Web应用,避免重新启动Tomcat。


tomcat-users.xml 配置管理tomcat用户

tomcat配置到MyEclipse中:
首选项---MyEclipse-->Servers--->Tomcat-->Tomcat X 选择相应版本路径


创建WEB项目,并发布到tomcat去

1.创建WEB项目 新建--->WEB 项目

2.发布

3.访问: http://主机ip(名):端口/项目名/页面.jsp
http://localhost:8080/testWeb/index.jsp



J2EE



Servlet: 一个服务类(基本类) 它只能在web容器中执行,响应请求,并执行相应业务逻辑,并返回一个结果(结果通常以jsp,或html文件)



继承关系:
public interface javax.servlet
--------- public abstract class javax.servlet.GenericServlet
----------------public abstract class javax.servlet.http.HttpServlet ******************


httpHttpServlet:提供将要被子类化以创建适用于 Web 站点的 HTTP servlet 的抽象类。
----------init(ServletConfig config) 初始化时要执行的方法
----------service() 产生一个新的线程来响应请求 去调用doGet()或doPost()方法
----------destroy() 这对像注消时要执行的方法
----------doGet(HttpServletRequest req, HttpServletResponse resp) 处理以get方式提交过来请求 ****
----------doPost(HttpServletRequest req, HttpServletResponse resp) 处理以post方式提交过来请求 ***
--------getInitParameter(String name)得到Servletr的初始化参数
------getInitParameterNames()
-----getServletConfig()返回此 servlet 的 ServletConfig 对象 //得到本身这个sevlet的定义。web.xml中其中的一个servlet
-----getServletContext()返回

对此 servlet 在其中运行的 ServletContext 的引用(servlet的上下文,项目的web.xml)
----getServletName()返回此 servlet 实例的名称



写一个Servlet类
1新建一个WEB项目
2.写一个自己写的Servlet类,通常继承HttpServlet类
3.Servlet类重写它相应的doGet方法或doPost方法
4.在web.xml中配置相应的servlet(servlet与servletmapping)


/项目名/WebRoot/WEB-INF/web.xml //表示这个项目的web配置文件 配置serlvet,strust2 ,spring,javaBean等等都要这里配置
例:/testWEB/WebRoot/WEB-INF/web.xml




HTTP提交请求常用方法:
Get方式: URL地址加上提交表单参数 https://www.doczj.com/doc/1412267855.html,?userName=er&id=rrr 提交的请求参数在URL地址上是可见,不安全

Post方式 提交的请求参数是在http头中,而URL地址上是不可见的,安全

注:http提交请注默认方式为:Get方式


Servlet只能运行在WEB容器中,在WEB容器中至死至终只有一个实例
1.WEB容器加载时实例化:设置lodad-on-strartup
2.有请求时再进行实例化

Servlet的生命周期:************
1.WEB容器启加,去加载相应项目的web.xml文件,并根据web.xml文件配置来初始化项目配置
2.如果有设置为标签的Servlet类就实例化它,等待用户的请求
3.WEB容器启动完成后,等待用户的请求
4.有URL请求时,就进行响应,当这个请求访问的Servlet实例没有时,它就先实例这个Serlet类
5.实例化Servlet类时,首选执行init()初始化方法 ,实例化成功就等待用户请求
6.当有用户请求时,调用service()方法产生一个线程来调用相应的doGet()方法或doPost()方法..
7 执行相应的doGet()方法或doPost()方法的方法后,并返以相应的结果来相应请求
8.再回到6步,继承等待用户请求
9.当WEB容器重启,或关闭时这个Servlet才进行destroy()销毁方法

注:Servlet实例在WEB容器中只有一个实例(对像),定义局部变量时,一定要定义相应doGet方法或doPost方法,如果定义在Sevlet类的一个属性,那它就是全局变量

HttpServletRequest:Servlet请求的定义
public interface javax.servlet.http.HttpServletRequest
---setAttribute(String name, Object o) //设置属性 key value *
----getAttribute(String name) //得到指定属性的值 ****
----getAttributeNames() //得到所有属性的名字
----setCharacterEncoding(String env) //设置字符编码集 //"UTF-8"
-----getCharacterEncoding()
----getInputStream()//得到inputStream
-----getParameter(String name)返URL请求参数的值 ********
-----getParameterMap()以map的形式返回所有URL请求中的参数
-----getParameterNames() 返回URL请求中参数的名字
-----getParameterValues(String name) 返回包含给定请求参数拥有的所有值的 String 对象数组

-----getRequestURI()
----getCookies()
---getRequestedSessionId()
-------getSession()返回与此请求关联的当前会话,如果该请求没有会话,则创建一个会话
----getRequestDispatcher(String path)



HttpServletResponse:是Servlet响应请求的类:*********
public interface javax.servlet.http.HttpServletResponse
----addCookie(Cookie cookie)将指定 cookie 添加到响应。 ******
----encodeRedirectURL(String url)对指定 URL 进行编码 ******
----setCharacterEncoding(String charset)设置将发送到客户端的响应的字符编码 ***
----getCharacterEncoding()
----setContentType(String type)设置将发送到客户端的响应的内容类型
-----getOutputStream()
-----getWriter() 回可将字符文本发送到客户端的 PrintWriter 对象
----sendRedirect(String location) 使用指定重定向位置 URL 将临时重定向响应发送到客户端。
------encodeURL()把sessionid加到URL地址中


ServletConfig: ServletConfig 对象 //得到本身这个sevlet的定义。web.xml中其中的一个servlet
----getInitParameter(String name)得到sevlet定义中的初始化参数的值
----getInitParameterNames()以 String 对象的 Enumeration 的形式返回 servlet 的初始化参数的名称
----getServletContext()返回对调用者在其中执行操作的 ServletContext 的引用
---getServletName()返回此 servlet 实例的名称

web.xml中的servlet中配置的servlet中init-param表示当前的Sevelt中有效(多个访问当前sevelet会话中共享数据)

P2
xxx

例:
System.out.println("得到Sevlet的初始化参数"+this.getInitParameter("P2"));

System.out.println( getServletConfig().getInitParameter("P2")); //两条语句是等价关系 //xxx

getServletConfig(). getInitParameterNames() //是以String[]数组方式返回所有初始化参数名



ServletContext:Servlect上下文,相当于进web.xml ,通常用来设置全局变量(整个项目都可以访问)
public interface javax.servlet
-----setAttribute(String name, Object object)将对象绑定到此 servlet 上下文中的给定属性名称 通常用来设置全局变量(整个项目都可以访问)
-----getAttribute(String name)返回具有给定名称的 servlet 容器属性,如果不具有该名称的属性,则返回 null
-----getAttributeNames()返回包含此 servlet 上下文中可用属性的名称的 Enumeration
-----setAttribute(String name, Object object)将对象绑定到此 servlet 上下文中的给定属性名称
-----removeAttribute(String name)
-----getInitParameter(String name)返回包含指定上下文范围初始化参数值的 String,如果参数不存在,则返回 null。
-----getInitParameterNames()
-----getServletNames() //得到这个web.xml中所定义所有Servlet名

例:
//得到 ServletContext的初始化参


ServletContext sc = getServletContext();
System.out.println("得到 ServletContext的初始化参数"+sc.getInitParameter("contextP1"));



HttpServletRequest与ServletContext中都有set/get/Attribute()方法
作用或不同:1.httpSeveletRequest中添加的属性只能在会话有效
2.ServletContext设置的属性只是整个项目中有效




重定向 :请求某一个Sverlet,而这个Sverlet中没有你需要数据,而告诉你去其它Svelet中去得到
张三向王麻子借钱,麻子说:我没有钱,你去找王老伍,他家是土豪 ,张三再向王老伍借钱
注:1,重定向要产生两次请求 ,2.URL地址要变


HttpServletResponse.sendRedirect(String location) 使用指定重定向位置 URL 将临时重定向响应发送到客户端。



转发 :请求某一个Sverlet,这个Sverlt把相应请求转发到另一个Svelet来进行处理,并响应 (是把一个请求层层转发到某一个Servelet进行处理)
张三向王麻子借钱,王麻子没有钱,但为了帮张三,而王麻子向王老伍借,借来钱再借给张三
注:转发只产生一次请求 ,URL地址不会变


httpServletRequest.getRequestDispatcher(String path)转发


HttpServletResponse.sendRedirect(String location) 使用指定重定向位置 URL 将临时重定向响应发送到客户端。


注:转发与重定向必须是在提交相应这前处理


http会话过程: 请求---->响应






http://127.0.0.1:8080/testWEB/login?userName=dddd&userPwd=dd&M=Redirect
http://127.0.0.1:8080/testWEB/login?userName=dddd&userPwd=dd&M=Dispatcher



public interface javax.servlet.RequestDispatcher

----forward(ServletRequest request, ServletResponse response); 转发时丢失掉以前的Response
----include(ServletRequest request, ServletResponse response) 转发时把以前的response包含进来


会话的跟踪技术:Cookie ,Session
Cookie 把WEB服务器中的数据(字符串数据)保存在本地
为了保存Servelt处理过程中的数据,方便下一次浏览器使用,而产生一个会话跟踪技术

为什么要有Cookie技术,有什么优缺点






浏览器应该支持每台 Web 服务器有 20 个 cookie,总共有 300 个 cookie,并且可能将每个 cookie 的大小限定为 4 KB。
注: HttpSevlet.Request. getCookies()//是从请求得到cookie
HttpSevlet.Response.addCookie(); //通过响应来保存cookie

保存在浏览器客户端的机子里的key和value对应健值对,当浏览提交请求时,会一起把cookie也一起提交, WEB服务响应返回来中有coookie就保存在本地磁盘中,前提浏览器未禁用cookie

public class javax.servlet.http.Cookie

----Cookie(String name, String value)构造带指定名称和值的 cookie。
-----setMaxAge(int expiry)设置 cookie 的最大生存时间,以秒为单位。
-----getName()返回 cookie 的名称。

-----setValue(String newValue)在创建 cookie 之后将新值分配给 cookie

例:
Cookie c=new Cookie("username",(String) req.getParameter("userName"));
c.setMaxAge(200);

resp.addCookie(c); //把Cookie保存在客户端的浏览器中


resp.addCookie(new Cookie("username","" )); //表示username为空值
c.setMaxAge(0);//把c对像失效 //提交请求会读取Cookie中MaxAge不为零的对像封装到HttpServletRequest中


Cookie[] temp = req.getCookies(); //得到客户端浏览器中保存的Cookies
for (Cookie cookie : temp)
System.out.println("Cookie的key:"+cookie.getName() +" 值:"+cookie.getValue());



Session:数据信息保存到服务中,而客户提交请求(第一次提交请求时会产生一个唯一的sessionid),去跟服务器中找是否有相应的sessionid,有就可以反回这个seesion中保存的数据(数据信息保存到服务中)


JSESSIONID 值:E2C3157F8250E814EE3CAC050018CB19
注: 如果浏览器能使用cookie时,WEB容器会自动把sessionid写入到cookie



public interface javax.servlet.http.HttpSession
提供一种方式,跨多个页面请求或对 Web 站点的多次访问标识用户并存储有关该用户的信息
-----invalidate()使此会话无效,然后取消对任何绑定到它的对象的绑定。
------removeAttribute(String name)
------setAttribute(String name, Object value)
------getAttribute(String name)
------getAttributeNames()
------getId()
------setMaxInactiveInterval(int interval)



如果得到session对像:

HttpServletRequest对中的方法getSession()得到

request.getSession(true); //如果服务中没有相应的Session那就会自动创建一个新

request.getSession(false) //如果服务中没有相应的Session那返回null





HttpSession session = req.getSession(); //得到session

System.out.println("当前的ssesion ID为:"+session.getId());

session.setAttribute("username", (String) req.getParameter("userName")); //添加属性


为什么使用Cookie和Session 跟踪会话,保存会话间的数据

优缺点与区别:
Cookie 数据保存在客户端 Session 保存在服务器中
Cookie 数据不安全
Cookie 数据大小有限制 小于4K,Session只是服务内存足够大,就可以保存很多
Cookie 数据只能是字符串,Session可以保存对像
Cookie 只能针对当前项目页面



作业:验证Session技术
写一个登陆界面,要求跟踪会话,登陆成功转去A页,A页 ---->B页面---->C页面 如果没登陆过,自动转向登陆界面



filter 过滤器:
作用:
1) 验证过滤器
2) 日志记录和审计过滤器
3) 图像转换过滤器
4) 数据压缩过滤器
5) 加密过滤器
6) 标记过滤器
7) 触发资

源访问事件的过滤器
8) XSL/T 过滤器
9) Mime 类型链过滤器

注:Filter的生命周期与servlet相似,Filter的生命周期是完全交给WEB容器(tomcat)来管理

public interface javax.servlet Filter
-----destroy() //注消时执行的方法
-----init(FilterConfig filterConfig) throws ServletException //初始化时
----doFilter(ServletRequest request, ServletResponse response, FilterChain chain) //执行过滤的核心代码



public interface javax.servlet FilterConfig //web.xml中的fiter配置信息

---getFilterName()返回此过滤器的过滤器名称。
---getInitParameter(String name)返回包含指定初始化参数的值的 String,如果参数不存在,则返回 null
---getInitParameterNames()
---getServletContext()返回对调用者在其中执行操作的 ServletContext 的引用。


过滤链:
public interface javax.servlet FilterChain 表示的是一个过滤链 *****
---doFilter(ServletRequest request, ServletResponse response) 导致链中的下一个过滤器被调用,如果调用的过滤器是链中的最后一个过滤器,则导致调用链末尾的资源。

注:在web.xml中是以先后顺序来产生过滤链的



使用过滤的步骤:
1.自定义一个过滤器类,实现Filter接口

2.重写过滤类的doFilter方法

3.在doFilter方法中来进行处理过滤的逻辑代码

4.配值web.xml中地标签及


例:web.xml中的



sessionFilter
com.abmow.filter.SessionFilter



sessionFilter


/login




地址encodeURL:login2;jsessionid=E211067E2A900D7B135401981EF3FE5C


http://127.0.0.1:8080/testWEB/login2;jsessionid=E211067E2A900D7B135401981EF3FE5C


form表单中的Action中 /表示是以端口开的路径访问 如果不写/表示是以相对路径来访问
http://127.0.0.1:8080/login?userName=ee&userPwd=ee
http://127.0.0.1:8080/testWEB/login2;jsessionid=6368BD7F5EEEB3383004F089068227F7




servlet中JDBC操作

1.加驱动包 加在项目中的WEB_INF下LIB目录
2.操作JDBC 参考JAVASE中操作JDBC

DAO模式: 见代码


监听:

监听接口:
HttpSessionListener 对 Web 应用程序中活动会话列表的更改将通知此接口的实现
---sessionCreated(HttpSessionEvent se)通知创建了一个会话。
----sessionDestroyed(HttpSessionEvent se)通知某个会话即将无效。
HttpSessionAttributeListener 为了获取此 Web 应用程序内会话属性列表更改的通知
-----attributeAdded(HttpSessionBindingEvent se)通知已将属性添加到会话。在添加属性之后调 -----attributeRemoved(HttpSes

sionBindingEvent se)通知属性已从会话中移除。在移除属性之后调用。
-----attributeReplaced(HttpSessionBindingEvent se)通知已替换会话中的一个属性。在替换属性之后调用。

HttpSessionBindingListener
HttpSessionActivationListener


ServletContext 省略见API

HttpServletRequest 省略见API


使用监听步骤:
1.创建一个监听器,实现相应的监听接口
2.实现相应的方法
3.在web.xml中配置监听 (通过配置web.xml来邦定监听器,具体邦定交由WEB容器自动完成)


public class LoginListener implements HttpSessionListener,HttpSessionAttributeListener{

public void sessionCreated(HttpSessionEvent arg0) {
System.out.println("创建了会话");

}

public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.println("结束了会话");

}

public void attributeAdded(HttpSessionBindingEvent arg0) {

System.out.println("你添加了一个属性"+arg0.getName()); //得到添加的属性名

}

public void attributeRemoved(HttpSessionBindingEvent arg0) {
System.out.println("你删除一个属性"+arg0.getName());

}

public void attributeReplaced(HttpSessionBindingEvent arg0) {
System.out.println("你改变了一个属性"+arg0.getName());

}



}




com.ambow.listener.LoginListener




************************************JSP篇**********************************

JSP技术Java Server Pages(JSP):
JSP是一种动态网页编程序技术
JSP允许在页面中包括Java代码和HTML标签
JSP文件的扩展名为.jsp


注:JSP本质就是一个Servlet ******************
JSP只能运行在WEB容器中 ,与HTML不有区别

JSP的生命周期:
1.浏览访问JSP,如果WEB容器没有这个JSP,就返回404错误
2.当第一次访问JSP或修改了JSP,把JSP转换成一个.java源文件
3.把java源文件,转换成.class的中间文件
4.WEB容器以Sevlet的形式加载它
5.初始化
6.执行service方法来进行来产生新线程来响应请求,并反回结果
7.注销


jsp转换成java源文件
_jspInit() //初化JSP
_jspDestroy() //注销JSP时
_jspService(HttpServletRequest request, HttpServletResponse response) //JSP执行的逻辑代码


JSP中包含静态HTML和动态的java代码
静态HTML:以前的HTML标签,javaScript脚本,CSS层叠样式表等
动态的java脚本(服务端的脚本,与javaScrpt客服端脚本),使用<% java代码 %>

注:java脚本文件与javaScript脚本是不相同的


java脚本文件: <% java代码 >%

JSP代码注释
//java代码单行注释
/* java代码的多行注释 */
<%-- 对多行代码进行注释 --%>
把里面的转换成java代码注释

例:

tribute("myid","001"); --> //不执行,当成是文本 输出到HTML中
//转化成Servlet中语句,要执行

JSP中定义属性和方法( 定义servlet的属性和方法)
<%! 定义属性和方法 %>

例:<%!
String name="张三";
public void getName(){
System.out.println("xxxx");
}

%>


**************************************
JSP九大内置对像:

out resones.getwrite();

requset httpServletRequset
response httpSevletResponse
config Sevletconfig
session httpSession
application SevletContext
page this
pageContext page上下文
exception page的异常

jsp指令:
page
taglib
include

page指令:主要用来设置当前JSP的属性值,放在jsp中第一行
<%@ page 属性=XXX .... %>

属性:
language="java" 用于设置JSP脚本使用的语言,默认是java
import="java.util.*" 用于设置JSP中要使用的java包 ,这个属性可以是多个,其它的属性只能是唯一
pageEncoding="UTF-8" 用于设置JSP页面使用的编码字符集
extends="类名" 用于设置JSP转化成Servlet类继承那一个类,
默认是继承:org.apache.jasper.runtime.HttpJspBase
session="true/flase" 用于设置当前JSP是否可以使用session内置对像 默认为true
autoFlush="true/false" 用于设置JSP中out输出数据是否缓存,默认为true
buffer="none/Nkb" 用于设置缓存的大小,none是无缓存, 8kb
isThreadsafe="true/flase" 用于设置是否是线程安全的,默认为true
isErrorPage="true/false" 用于设置当前JSP是不是一个错误处理页面
errorPage="错误页面的URL" 用于设置当前JSP页面发生异常时,跳过到那一个错误页面
contentType="text/html" 用于设置当前JSP一个什么类型的文档

例:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="/error.jsp" %>
<%@ page import="java.awt.event.*" %>





<%@ taglib %> 引用相应的标签
例: <%@ taglib uri="https://www.doczj.com/doc/1412267855.html,/jsp/jstl/core" prefix="C" %>
prefix属性为标签取别名


<%@ include file="/head.jsp" %> 静态包含一个JSP文件,是把一个JSP文件里的内存包含到前这个页面上来,然后统一的进行转化成java源代码 ,通常进来JSP开发的一个模块化开发
注:小心HTML标签的配对问题



JSP行为标签:
动态包含
转发
定义对像javaBean
设值
取值
设置参数

了解

可以静态包含和动态包含

注:当page="*.jsp",扩展名为jsp那它就一个动

态包含,把URL指定的jsp执行完的结果包含进来
只能包含jsp文件,其它文件可能发生异常

与<%@ include %> 的区别 ,一个包含进来再进编译,一个执行的结果包含进来



注:test.jsp与test.txt文件内容一样,同进动态包含进来

**************
请求转发



相类: RequestDispatcher rds = req.getRequestDispatcher("login2");
rds.forward(req, resp); //转发



语法:




//设值

注:与java代码等价:
user = (https://www.doczj.com/doc/1412267855.html,er) _jspx_page_context.getAttribute("user", PageContext.APPLICATION_SCOPE);
if (user == null){
user = new https://www.doczj.com/doc/1412267855.html,er();
_jspx_page_context.setAttribute("user", user, PageContext.APPLICATION_SCOPE);
}

scope属性用于指定当前javaBean对像的四种作用域,默认为page





Object user=new User(); b //上塑造型

何为javaBean
例:
public class User {
private String name; //属性私有
private int age;
private Boolean sex;
public String getName() {
//第个属性实现get/set方法 ,布尔类型的getXxx方法改成isXxx

return name;
}
public void setName(String name) {
https://www.doczj.com/doc/1412267855.html, = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Boolean isSex() {
return sex;
}
public void setSex(Boolean sex) {
this.sex = sex;
}

}


JSP的作用域:
page
Request
session
application
注:用作用域是从小到大


作业: 登陆 jsp实现


JSP/servlet MVC思想

M1 JSP域sevlet中包含表现层和业务逻辑处理层
M2 JSP用来处理表现层,sevlet有服务类用来处理业务逻辑


四种使用方法:
1. //对一个javaBena设值
2.jsp:setProperty name="user" property="name" /> //通过地址栏的能数自动布配信息为name的值
3. //通过地址栏参数来进行设值
4. //通过地址参数配置自动设置值相应属性的值
http://127.0.0.1:8080/testWEB/tes

t_setProperty.jsp?name=xxx&age=99



注:开发过程中,强力要求不使用 <% java代码脚本 %>




设置参数:

例:







************************
EL表过式

用于简单JSP中java代码的取值和计算操作

EL语法: ${开始 }结束
例: ${表达式}
${对像.属性}
${对像["属性名"]} //属性名中包括有特殊字符时, 属性为:name firt ${user["name firt"]}
${对像['属性名']}



计算值为:<%=10+10 %>
计算值为:${10+10}
两者等价


第一种:
<%=user.getName()%>


第二种:



第三种EL表达式来得到:${https://www.doczj.com/doc/1412267855.html,}

EL运算符
算术运算: + - * / %
逻辑运算: && || !
关系运算: > < >= <= !=
条件运算: ? :
测试非空运算: empty


EL操作 数组,javaBean,List,Map中的数据
${对像.属性}
${对像[下标]}
${对像[key]}

注:默认自动四个作域里搜索,requestScope-->pageScope-->sessionScope-->applicationScope这样搜索顺序

EL内置对像(11个):
pageContext 可以得到这个对像中的属性值 setAttribter("Key","value");
pageScope 可以得到对像中属性值
requestScope //得到请求中对属性值
sessionScope //得到session的属性值
applicationScope //web上下文中的属性值
param //得到请求中参数的值
paramValues //得到请求中对数值的数组
header //了解
headerValues //了解
cookie //得到cookie中的值
initParam //得到web.xml web-context里的配的参数



EL访问Cookie

例:
<%

Cookie c= new Cookie("aa","cookie");
response.addCookie(c);

%>


得到请求参数中的Cookie中key为aa的值 : ${cookie.aa.value}


${cookie.cookieKEY.value} //得到cookie中的对应key的value值
${https://www.doczj.com/doc/1412267855.html,} //得到key










第一种:
<%=user.getName()%>


第二种:



第三种EL表达式来得到:${https://www.doczj.com/doc/1412267855.html,}




计算EL empty : ${empty https://www.doczj.com/doc/1412267855.html, }


得到请求参数中的name参数值 : ${https://www.doczj.com/doc/1412267855.html, }


得到请求参数中的name参数值的数组 : ${https://www.doczj.com/doc/1412267855.html,[0] }

得到请求参数中的name参数值的数组 : ${https://www.doczj.com/doc/1412267855.html,[1] }


得到请求参数中的requset中key1的值 : ${requestScope.key1 }




得到请求参数中的requset中javaBean对像user的namne属性 : ${https://www.doczj.com/doc/1412267855.html, }

得到请求参数中的session中javaBean对像user的namne属性 : ${https://www.doczj.com/doc/1412267855.html, }



得到请求参数中的Cookie中key为aa的值 : ${cookie.aa.value}


得到请求参数中的Cookie中key为aa的值 : ${https://www.doczj.com/doc/1412267855.html,}


作业:
写一个留言板



***********************JSP标签 JSTL*****************************
1.何为JSP标签
2.为什么要使用JSP标签 简化JSP中所包含的java脚本语言

JSTL:JSP标签库

标签库 URI 前缀
Core https://www.doczj.com/doc/1412267855.html,/jsp/jstl/core c 核心标签 ****
XML processing https://www.doczj.com/doc/1412267855.html,/jsp/jstl/xml x
I18N formatting https://www.doczj.com/doc/1412267855.html,/jsp/jstl/fmt fmt 国际化标签 ***
Database access https://www.doczj.com/doc/1412267855.html,/jsp/jstl/sql sql
Functions https://www.doczj.com/doc/1412267855.html,/jsp/jstl/functions fn 函数标签 *


注:使用标签必须用 <%@ taglib uri="https://www.doczj.com/doc/1412267855.html,/jsp/jstl/core" prefix="C" %> 来引用



Core :jsp的核心标签
分为四类:
运算式标签:
流程控制标签:
循环控制标签:
URL 相关标签:


输出标签. 输出到JSPWriter中

语法1:

语法2:
default value

注:value 表示要显示值,可以是一个常量,也可是一个EL表达式
escapeXml 为true表示显示的内容中有< > 等一些HTML中的特殊符号时用转义字符表 > 换成 < 默认为true
default 表示当value值为null时,则显示default的内容



例: 当a对像是一个null时默认显示这此信息


与下面两条语句等价:
<%=" 这是我在使用c:out标签" %>
<% out.write(" 这是我在使用c:out标签 "); %>

**************************
用于赋值的标签


语法:


...本体内容 充当value属性的值



对已经有的javaBean对像的属性进行赋值



... 本体内容


注:var 表示创建或修改的变量名
value 给示赋值内容
sc

ope 对那一个作域的变量进行操作,默认是page作用域
target javaBean变量
property javaBean的属性

执行的过程:首先在指定的作用域中去找有没有var这个变量,如果没变就在指定的作用域中创建它,并赋值,
当作用域中已经有这个var变量时,则表示修改些变量的值


例:对javaBean的对像user的age属性赋值
1




*********
用于删除的 标签
语法:




*******************************
用于异常捕获的 标签
语法:

...将要抓取错误的地方


注:var 存储错误信息的变量


例:

<%

int c=20;
int b=1;
int x=c/b;

%>



${myexip}

出错啦!!!!!!




***********************************国际化标签 I18N**********************
何为国际化
怎么使用国际化

1.引入国际化标签
<%@ taglib prefix="fmt" uri="https://www.doczj.com/doc/1412267855.html,/jsp/jstl/fmt" %>
2.编写properties资源文件
/testWEB/src/com/i18n/messages_en_US.properties
/testWEB/src/com/i18n/messages_zh_CN.properties

3.使用相应fmt标签


常用的标签:
1 设置语言环境

注:value为指定年语言环境 zh_CN zh_TW zh_HK en_US zh-CN
scope 表示设置的语言环境默认为当前页面有效,session有效,整个项目有效
variant:了解 定义是WIN,还是MAC

如果不不设置语言环境,默认是当前操作系统的浏览器的默认语言

2 邦定相应资源包


basename:表示一个资源名 包名+资源名 资源名不包含zh_CN和扩展名
mymessage_zh_CN.propertes 资源名

例:



3.
注: prefix:指定资源文件中的name的前缀名
https://www.doczj.com/doc/1412267855.html,=\u59D3*\u540D
Login.pwd=\u5BC6*\u7801

上面的prefix就可以为Login.
与setBundel区别在于:setBUdnel可以存在一个指定的作用域变量中,而只能是它的标签体内有效


4.
显示相应信息


注:key:表示资源文件中的name
bundle:邦定的资源变量名
var: 如果没有这个var就直接显示出来,如果有,就把得到的value存入到指定的变量中


例:

:

:



例:

:

:





国际化时区,时间,数字了解
设计时区 了解

作业:写一个国际化的登陆,注册页面












相关主题
文本预览
相关文档 最新文档