jsp的学习,1jsp动作指令
2jsp内置对象
3jstl标签
1谈及jsp,就要先谈到网页,曾经是只有静态网页的,就是html,后来为了与浏览器交互,就有了动态网页。asp,php,jsp便是三大阵营。
jsp就是在传统的html文件中插入java程序段和jsp标签,从而形成jsp文件。jsp也需要自己的运行环境,称为jsp服务器或jsp容器。
2jsp就是在html中嵌入了java代码,所以本质上jsp程序就是java程序,jsp程序继承了java的一切优点
<strong><span style="font-size:18px;background-color: rgb(255, 255, 255);"><strong><span style="font-size:18px;"><%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%
int first = 0;
int second = 0;
if(request.getParameter("first")!=null&& request.getParameter("first").length()>0)
{
first = Integer.parseInt(request.getParameter(("first"));
}
if(request.getParameter("second")!=null&&request.getParameter("second").length()>0)
{
second = Integer.parseInt(request.getParameter("second"));
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>求和jsp示例</title>
<script type = "text/javascript">
function check(){
if(this.document.form[0].first.value.length == 0)
alert("请输入第一个整数");
else if(this.document.form[0].second.value.length == 0)
alert("请输入第二个整数");
else if(isNaN(this.document.form[0].first.value))
alert("输入的第一个数字必须是整型数据");
else if(isNaN(this.document.form[0].second.value))
alert("输入的第二个数字必须是整型数据");
else
this.document.form[0].submit();
}
</script>
</head>
<body>
<form action = "Add.jsp" method="post">
<font size="2">
这个jsp页面是求两个整数的和:<br>
请输入第一个整数:<input type = "text" name = "first"/> <br>
请输入第二个整数: <input type = "text" name = "second"/> <br>
这两个数的和为: <%=(first + second)%><br>
<input type="button" value="求和" οnclick="check()"/> <br>
</font>
</font>
</form>
</body>
</html></span></strong></span></strong>
3一个简单jsp代码,可能有的地方写错。大意明白就好。
首先是插入的一段java代码。
其次是html代码。
中间还插有一段javascript代码。和jsp无关,是属于客户端的语言。
4在web开发中,经常会遇到jsp的动作指令,例如在使用javabean的时候就离不开userbean的指令,jsp的强大功能和它丰富的动作指令标签是分不开的。
include:
就是包含一个文件,该文件可以是静态的文件也可以是动态的脚本。
forward:
重定向。<jsp:forward page = "Main.jsp"></jsp:forward>
param:
上面的forward动作指令可以用程序控制页面的跳转,如果需要在跳转的时候同时传递参数,这时候就需要用到param指令。
<strong><span style="font-size:18px;background-color: rgb(255, 255, 255);"><strong><span style="font-size:18px;"><%@ page language = "java" import = "java.util.*" contentType = "text/html;charset = gb2312"%>
<html>
<head>
<title>
页面跳转并且传递参数示例
</title>
</head>
<body>
从这个页面传递参数
<jsp:forward page = "GetParam.jsp"> //跳转页面
<jsp:param name = "param" value = "test"/> //传递参数
</jsp:forward>
</body>
</html>
<%@ page language = "java" import = "java.util.*" contentType = "text/html;charset = gb2312"%>
<html>
<head>
<title>
页面跳转并传递参数示例
</title>
</head>
<body>
<font size = "2">
这个页面传递来的参数: <br>
前一个页面传递过来的参数为: <%out.print(request.getParameter("param"));%>
</body>
</html></span></strong></span></strong>
<jsp:plugin>
元素用于在浏览器中播放或显示一个对象(典型的就是applet和bean)而这种显示需要浏览器的Java插件。当jsp文件被编译,送往浏览器时,<jsp:plugin>元素将会根据浏览器的版本替换成<object>或者<embed>元素。
useBean:
<jsp:useBean id = " " class = " " scope = " "></jsp:useBean>
useBean动作指令可以在jsp中引用JavaBean,其中id为所用的javaBean的示例对象名称;class是JavaBean对应类的包路径,包括包名和类名;scope是这个JavaBean的有效范围,共有page,request,session,application四个值可以选择。
setProperty:
用来给JavaBean的实例对象进行赋值操作
getProperty:
用来取出JavaBean实例对象的属性值
JSP内置对象
我觉得这个挺重要,所以着重讲下。会多写些代码。
JSP内置对象即无需声明就可以直接使用的对象实例。
为了学会使用jsp内置对象,就要知道有哪些常用内置对象,然后了解其常用的方法。
就是这么简答一件事。
1request对象
request对象代表这是从用户发送过来的请求,从这个对象中间可以取出客户端用户提交的数据或者参数,这个对象只有接受用户请求的页面才可以访问。
setAttribute(String name,Object):设置名字为name的request的参数值
getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例
getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组
getCharacterEncoding():返回请求中的字符编码方式
getContentLength():返回请求的Body的长度
getHeader(String name):获得HTTP协议定义的文件头信息
getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例
getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例
getInputStream():返回请求的输入流,用于获得请求中的数据
getMethod():获得客户端向服务器端传送数据的方法
getParameter(String name):获得客户端传送给服务器端的有name指定的参数值
getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(String name):获得有name指定的参数的所有值
getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString():获得查询字符串
getRequestURI():获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的IP地址
getRemoteHost():获取客户端的名字
getSession([Boolean create]):返回和请求相关Session
getServerName():获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径
getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性
一个小小实例:
<strong><span style="font-size:18px;background-color: rgb(255, 255, 255);"><%@ page language = "java" import = "java.util.*" contentType = "text/html;charset = gb2312"%>
<html>
<head>
<title>request主要方法调用示例</title>
</head>
<body>
<font size = "2">
request主要方法调用示例: <br>
<%
request.setAttribute("attr","Hello!");
out.println("attr属性的值为:" + request.getAttribute("attr") + "<br>"); //获取altr属性值
out.println("上下文路径为:" + request.getContextPath() + "<br>"); //获取上下文
out.println("Cookies:" + request.getCookies() + "<br>"); //获取Cookies
out.println("Host" + request.getHeader("Host") + "<br>");
out.println("ServerName:" + request.getServerName() + "<br>");
out.println("SererPort" + request.getServerPort() + "<br>"); //获取端口号
out.println("RemoteAddr" + request.getRemoteAddr() + "<br>");
request.removeAttribute("attr");
out.println("属性移除后attr属性的值为:" +request.getAttribute("attr") + <br>);
%>
</font>
</body>
</html></span></strong>
request对象使用实例:
1使用request对象获取表单数据
<strong><span style="font-size:18px;background-color: rgb(255, 255, 255);"><%@ page language = "java" import = "java.util.*" contentType = "text/html;charset = gb2312"%>
<html>
<head>
<title>获取表单实例</title>
</head>
<body>
<font size = "2">
下面是表单内容: <br>
<form action = "Form.jsp" method = "post">
用户名: <input type = "text" name = "userName" size = "10"/>
密码: <input type = "password" name = "password" size = "10"/>
<input type = "submit" value = "提交">
</form>
下面是表单提交以后request取到的表单数据:<br>
<%
out.println("表单输入userName的值:" + request.getParameter("userName")+ "<br>");
//返回userName
out.println("表单输入password的值: " + request.getParameter("password") + "<br>");
//返回password
%>
</font>
</body>
</html></span></strong>
2使用request对象取得页面传递的参数
<%@ page language = "java" import = "java.util.*" contentType = "text/html;charset = gb2312"%>
<html>
<head>
<title>request对象取得页面传递参数示例</title>
</head>
<%
String param = request.getParameter("param"); //获取param参数
%>
<body>
<font size = "2">
<a href = "URL.jsp?param = Hello">请单击这个链接</a><br> //生成超链接
你提交的参数为 <%=param%>
</font>
</body>
</html>
response对象
response是对用户的请求作出反应。这里服务器就是可以使用response对象向用户发送数据,response是对应request的一个对象。
response对象的主要方法
1addCookie(Cookie cookie)
这个方法可以添加一个Cookie对象,用来保存客户端的用户信息。
2containsHeader(String name)
这个方法判断指定的头信息是否存在。
3encodeRedirectURL(String url)
这个方法可以对url进行编码。
4encodeURL(String url)
这个方法可以对url进行编码。
5flushBuffer()
这个方法可以清空缓存的内容。
6sendError(int error)
这个方法可以向客户端浏览器发送错误代码,如500为服务器内部错误。
7sendRedirect(String location)
这个方法可以把当前页面转发到其他的页面,实现页面的跳转。
response对象示例:
<%@ page language = "java" import = "java.util.*" contentType = "text/html;charset = gb2312"%>
<html>
<head>
<title>response对象页面重定向示例</title>
</head>
<body>
<%
response.sendRedirect("http://www.sohu.com");
%>
</body>
</html>
session对象
session对象维护着客户端用户和服务器用户的状态,从这个对象中间可以取出用户和服务器交互过程中的数据和信息。这个对象在用户关闭浏览器离开web应用之前一直有效。
session对象中保存的内容是用户与服务器整个交互过程中的信息,如果想在整个交互过程中都可以访问到的信息,就可以选择存放在session对象中。
例如在用户登录的过程中,可以在session中记录用户的登录状态,这样用户就不必在每个页面都重新登录,只要用户没有离开当前的web应用系统,就可以一直保存登录状态。
getAttribute(String name):这个方法可以获取指定属性的值。
getCreationTime():这个方法可以获取session对象创建时间。
getLastAccessedTime():这个方法可以获取session对象上次被访问的时间。
Invalidate():这个方法可以使session对象失效。
removeAttribute(String name): 这个方法可以移除指定的属性。
setAttribute(String name,Object value): 这个方法可以指定名称的属性赋值。
<%@ page language = "java" import = "java.util.*" contentType = "text/html;charset = gb2312"%>
<html>
<head>
<title>用户登录界面</title>
</head>
<body>
<font size = "2">
<form action = "LoginCheck.jsp" method = "post">
用户名:<input type = "text" name = "userName" size = "10"/>
密 码:<input type = "password" name = "password" size = "10"/>
<input type = "submit" value = "提交">
</form>
</font>
</body>
</html>
LoginCheck.jsp:
<strong><span style="font-size:18px;background-color: rgb(255, 255, 255);"><%@ page language = "java" import = "java.util.*" contentType = "text/html;charset = gb2312"%>
<html>
<head>
<title>用户登录验证页面</title>
</head>
<%
String userName = request.getParameter("userName"); //获取userName值
String password = request.getParameter("password"); //获取password值
if(userName.length()>0&&password.length() > 0) //判断userName和password
{
session.setAttribute("status","Login");
response.sendRedirect("Marin.jsp"); //重定向到marin
}else
response.sendRedirect("Login.jsp"); //重定向到Login.jsp
%>
<body>
</body>
</html></span></strong>
上述代码,如果密码账号不为空就允许登录,否则,重定向到登录页面。如果用户登录成功,就在session中设置一个status属性,然后把用户重定向到系统主页面,在主页面中可以访问session中的值。
<strong><span style="font-size:18px;background-color: rgb(255, 255, 255);"><%@ page language = "java" import = "java.util.*" contentType = "text/html;charset = gb2312"%>
<html>
<head>
<title>系统主界面</title>
</head>
<body>
<font size = "2">
<%
Object status = session.getAttribute("status");
if(session.getAttribute("status")!=null)
out.print("用户已经登录!");
else
response.sendRedirect("Login.jsp");
%>
</font>
</body>
</html></span></strong>
application对象
application对象保存着整个web应用运行期间的全局数据和信息,从web应用开始运行,这个对象就会被创建,在我恶补应用运行期间可以在任何jsp页面中访问这个对象。
和session对象区别:只要web应用还在运行,application对象就可以访问,而session对象在用户离开系统时就会注销。所以如果要保存在整个web应用运行期间都可以访问的数据,这是就要用到application对象。