paramname="参数名"value="参数值"/>动作
传递变量:
非java代码区:
<%=%>、${};java代码区:
字符串连接
三、四种属性范围
1、四种属性范围
(1)页面范围(page):
当前网页共享属性值后,只有当前网页可以获取,其他任何网页都不可以使用。
对象:
pageContext。
(2)一次服务器请求范围(request):
某个页面设置属性后,只要服务器端跳转经过的所有网页都可以获取该属性,其他网页都不可以使用。
对象:
request。
(3)一次会话范围(session):
单个用户的某个页面设置属性后,当前用户的所有网页都可以获取该属性。
对象:
session。
(4)一次服务器应用范围(application):
单个用户的某个页面设置属性后,所有用户的所有网页都可以获取该属性。
对象:
application。
2、三个操作方法
设置属性:
setAttribute("属性名",对象);
获取属性值:
getAttribute("属性名");---返回值是Object类型,要向下转型。
清除属性的方法:
removeAttribute("属性名");
3、网页间共享数据有3种方式
(1)两个有直接跳转的网页共享数据,可以跳转时传参数。
(2)服务器跳转可以向下传递request对象,在目标页通过request.getParameter()获取
(3)四种属性范围。
四、内置对象
1、request对象:
代表客户端向服务器的一次请求,通过这个对象来取得客户端的请求信息;每次请求产生新的对象(浏览器输入网址、客户端跳转、表单提交);request可以存储参数和共享的属性。
(HttpServletRequest);
方法:
1)getParameter("参数");//获取请求参数
2)setCharacterEncoding("utf-8");//处理传输过程中的中文乱码
3)getRequestDispatcher("文件名.jsp").forward(request,response);//服务器跳转网页
4)setAttribute("属性名",对象);//共享属性
5)getAttribute("属性名");//获取共享属性
6)removeAttribute("属性名");//清除共享属性
7)getSession();//获取session对象
8)getParameterValues("参数");//获取请求参数(一个名多个值)
9)getRemoteAddr();//获取客户端IP地址
10)getContextPath();//获取网站虚拟路径
2、response对象:
服务器对请求的应答,该对象向客户端返回计算结果,实现客户端网页跳转。
(HttpServletResponse)
方法:
1)sendRedirect("文件名.jsp");//客户端跳转网页
2)setContentType("text/html;charset=utf-8");设置网页格式和字符集
3)getWriter();//获取PrintWriter对象
3、session对象:
用来保存单个用户多网页间的共享信息;为登录网站的每个用户都创建一个独有的session对象,多少个用户就有多少个session对象;第一次浏览该网站的网页产生对象,调用invalidate方法或者生命周期结束销毁对象。
(HttpSession)
方法:
1)setAttribute("属性名",对象);//共享属性
2)getAttribute("属性名");//获取共享属性
3)removeAttribute("属性名");//清除共享属性
4)invalidate();//销毁当前用户的session对象
5)setMaxInactiveInterval(30*60);//设置session对象有效期单位是秒
6)isNew();//判断session是否是新创建的对象是返回true
7)getId();//获取session的id
4、application对象:
用来保存所有用户的共享信息,服务器启动时创建,服务器关闭时销毁,整个期间只有一个。
(ServletContext)
方法:
1)setAttribute("属性名",对象);//共享属性
2)getAttribute("属性名");//获取共享属性
3)removeAttribute("属性名");//清除共享属性
4)getRealPath("/");获取项目被发布到服务器上的绝对路径
5、config对象:
用来获取web.xml配置文件中保存的服务器启动时的初始化参数。
(ServletConfig)。
方法:
getInitParameter("参数名");用来获取在web.xml配置文件中保存的初始化参数(服务器启动时)
getServletContext();获取application对象
6、out对象:
在网页上输出动态内容。
(JspWriter)
方法:
println();
7、pageContext对象:
共享页面级属性范围,通过它可以获取其他内置对象。
(PageContext)
方法:
1)setAttribute("属性名",对象);//共享属性
2)getAttribute("属性名");//获取共享属性
3)removeAttribute("属性名");//清除共享属性
4)getServletConfig();获取config对象
5)getServletContext();获取application对象
6)getRequest();获取request对象
7)getResponse();获取response对象
8)getSession();获取session对象
五、Cookie
1、本质
Cookie是保存在客户端硬盘上的文本文件,以键/值对的形式保存服务器写到客户端的单个用户的独有信息。
2、Cookie使用分为创建和读取2个阶段
(1)创建Cookie的4步骤
1)import导包
2)创建Cookie对象
3)设置Cookie有效期
4)将Cookie写入客户端
(2)读取Cookie的2步骤
1)从客户端读取所有的Cookie对象的数组
2)遍历数组
3、相关类介绍
(1)Cookie(javax.servlet.http.*)//该类的对象存储一个"键/值对"
--publicCookie(Stringname,Stringvalue);//创建对象
--publicStringgetName()//获取cookie的名称
--publicStringgetValue()//获取cookie的值
--publicvoidsetValue(Stringvalue)//在Cookie创建后,对cookie进行赋值
--publicvoidsetMaxAge(intexpiry)//设置Cookie的有效期,以秒为单位
--publicintgetMaxAge()//获取cookie的有效时间,以秒为单位
(2)HttpServletResponse
addCookie(cookie对象);//将Cookie写入客户端
(3)HttpServletRequest
Cookie[]cookies=request.getCookies();//从客户端读取所有的Cookie对象构成数组
4、删除cookies
-----------------------------------------------------------------------------------------------------------
<%//uname是之前存在的Cookie的名称
Cookiec=newCookie(“uname”,null);
c.setMaxAge(0);
response.addCookie(c);
%>
-----------------------------------------------------------------------------------------------------------
5、Cookie与session的比较
(1)session是在服务器端保存用户信息,Cookie是在客户端保存用户信息
(2)session中保存的是对象,Cookie保存的是字符串
(3)Cookie通常用于保存不重要的用户信息,重要的信息使用session保存
(4)session和Cookie都有有效期,有效期结束都销毁。
六、JavaBean
1、本质:
就是一个普通的java类,其满足以下5点要求:
1)JavaBean类必须打包
2)JavaBean类必须公有
3)JavaBean必须有一个无参的构造方法(可以有多个构造方法)
4)如果有属性必须是私有
5)如果有属性,设置和取得属性值的方法必须命名为setXXX和getXXX
2、功能
1)把声明类的Java代码从Jsp网页分离出来,实现显示与业务的分离。
利于开发过程中的分工,由jsp负责显示,由JavaBean负责实现具体功能(JavaBean中即可以封装业务逻辑,也可进行数据库操作)。
提高网站的开发效率,易维护。
2)提高java程序的可复用性。
3、jsp中调用javabean的方式:
1)首先用<%@pageimport=“”%>在jsp页面中引入包
2)然后创建类的对象,调用方法。
七、EL表达式
1、功能
功能:
获取并输出共享在四种属性范围中的某个属性值。
格式:
${属性名}
说明:
1)按page,request,session,application的顺序查找指定的属性名,如果找到则获取并输出,如果找不到则返回空串(而不是null)。
2)如果在不同的属性范围中设置了同一个属性名称,则以先找到为主,之后的同名属性无法找到。
3)用pageScope,requestScope,sessionScope,applicationScope内置对象来访问指定范围的同名属性。
${requestScope.属性名}
场合:
1)独立出现:
求值并在页面上直接输出。
2)作为标签属性的值:
求值后赋值给该属性
2、应用:
1)输出String对象${共享String对象属性名}
2)输出对象的属性。
${共享对象属性名.对象属性名}
3)输出对象的属性(嵌套)。
${共享对象属性名.对象属性名.对象属性名}
3、表达式内可执行关系,逻辑和算术运算
算术:
+,-,*,/,%
逻辑:
&&,||,!
关系:
==,!
=,>,<,>=,<=
条件:
?
:
判空:
empty为””或null返回true,否刚返回false;
4、pageContex内置对象,在EL表达式中用来获取其他内置对象
客户端跳转:
JSP页面:
servlet中:
response.sendRedirect(request.getContextPath()+"login.jsp")
八、JSTL标签库
1、功能:
以标签的形式来调用内部的方法在页面上实现具体功能。
比如输出集合元素,实现选择和循环。
2、使用jstl标签三步骤:
1)导入压缩包:
jstl.jar,standard.jar
2)用指令关联标签库:
<%@tagliburi="prefix="c"%>
3)使用具体标签
3、迭代标签
forEach>
forEach>
属性:
items:
指定要输出的集合,如果存放在属性中用${属性名}获取,如果是页面变量用<%=对象名%>获取。
var:
每次循环都把集合中的元素共享到属性作用域,var的值是共享的属性名,想要获取集合中的元素用${var的值}获取。
begin:
循环变量初值
end:
循环变量终值
step:
循环变量改变量
普通循环
forEachvar="i"begin="1"end="6"step=”1”>
x=${i}">${i};
forEach>
迭代Map集合
forEachitems="${Map}"var="item">
${item.key}==>${item.value}
forEach>
5、条件标签
iftest="">
if>:
实现单分支结构
属性:
test:
测试条件条件里用${}实现
choose>////实现多分支结构
whentest="">
when>
otherwise>
otherwise>
choose>
6、普通标签
out/>网页上动态输出,与out.println()方法相同
value:
要计算输出的表达式
default:
如果value是null,那么输出default的值
set/>将属性保存在四种属性范围中,与setAttribute()方法相同
var:
属性名
value:
属性值
scope:
属性的范围
target:
对象名,该对象必须存在与四种属性范围
property:
属性名
remove/>用于删除指定范围的属性removeAttribute
var:
待删除的属性名
scope:
属性的范围
7、函数库
<%@tagliburi="prefix="fn"%>
${fn:
length(字符串或集合)}:
求字符串或集合的长度。
九、servlet
1、本质
servlet就是一个java类,
2、功能:
它接受客户的请求并处理请求从而实现网站具体功能,即实现和jsp完全相同的功能。
把java代码从页面分离。
3、servlet开发网站3步骤:
(1)自定义类继承HttpServlet
(2)覆盖doPost(doGet)方法中编写代码,实现程序具体功能
(3)配置web.xml文件
MyServlet
com.servlet.MyServlet
MyServlet
/MyServlet//--------别名
4、servlet的生命周期
(1)服务器启动时,读取web.xml文件的所有配置信息并加载servlet类到内存;
(2)客户端浏览器第一次请求servlet时,服务器负责创建servlet对象,并调用init()初始化;
(3)根据请求类型(get,post)调用doget()或doPost()方法处理请求,可以多次请求一个Servlet;
(4)服务器关闭时销毁servlet对象,调用destroy()方法回收系统资源。
5、相关类
HttpServlet(javax.servlet.http.HttpServlet)抽象类
●publicvoidinit()throwsServletException{}
●publicvoidinit(ServletConfigconfig)throwsServletException{}
●publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{}//负责处理所有的get请求
●publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{}//负责处理所有的post请求
●publicvoiddestroy(){}
只有表单method="post"是post请求,其他都是get请求。
6、Servlet中使用JSP的6大内置对象
内置对象
获取方法
对应类
request
参数
HttpServletRequest
response
参数
HttpServletResponse
session
request.getSession()
HttpSession
application
1)this.getServletContext()
2)config.getServletContext()
ServletContext
out
response.getWriter()
PrintWriter
config
参数
ServletConfig
7、请求servlet
(1)浏览器地址栏请求Servlet:
()表单请求Servlet
(32)5种网页跳转请求Servlet:
8、servlet跳转到网页
(1)客户端
response.sendRedirect("");
(2)服务器端
request.getRequestDispatcher("").forward(request,response)
9、相对路径与绝对路径
功能:
在网页跳转时正确的找到目标页
(1)相对路径实现:
1)代码中路径前没有”/”;弄清当前页和目标页之间的文件夹层次关系。
2)如果目标页在当前页同级,直接写文件名;如果目标页在当前页下级就向下写文件夹;如果目标页在当前页上级就写../;如果有多个上一级目录,可以使用多个“../”。
(2)绝对路径实现:
1)先直接写出目标页的URL地址:
“http:
//localhost:
8088/t091302/login.jsp”。
2)代码中目标页路径必须以/开始,如果是客户端跳转则/前[http:
//localhost:
8080/];如果是服务器端跳转则/前为[http:
//localhost:
8088/网站虚拟目录/];然后再根据目标页的
10、开发动态网站设计思想(MVC设计模式)
1.分层
1)显示层(jsp实现)
(1)输入数据
(2)获取共享的结果并显示
2)控制层(servlet实现)
(1)接受客户端请求和请求参数
(2)创建业务类对象,调用方法得到结果
(3)共享结果,跳转到jsp网页
3)业务层(javaBean实现)
(1)调用DAO方法操作表中数据
(2)定义方法计算数据实现具体功能
4)持久层(javaBean实现)
(1)定义方法封装了所有的sql语句
2.解题步骤
1)首先分析程序一共实现几个功能,
2)分析实现每个功能的业务流程(分解成小功能),
3)以功能为线索,每一个功能都依次设计数据层,业务层,控制层,显示层。
十、过滤器
1、本质