谈及jsp

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>


plugin:

<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对象。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值