java西天取经之路(三)JSP技术学习要点
来源:互联网 发布:北京政务数据资源网 编辑:程序博客网 时间:2024/06/06 10:03
1、JSP(Java Server Pages)是一种动态网页技术标准。在传统的网页HTML文件上(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。JSP可以在任何支持JSP的服务器中运行。JSP技术使用java语言编写动态网页的处理逻辑。小逻辑可以直接和html代码混写在一起,大逻辑可以编写成独立的java类(java bean)。所以说jsp支持逻辑和视图的分离,即支持可重用的基于组件的设计,使基于web的应用程序的开发变得迅速。
JSP与java servlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。JSP页面由HTML代码和嵌入其中的java代码所组成。服务器在页面被客户端请求以后。对这些java代码进行处理,然后将生成的HTML页面返回客户端的浏览器。
JSP页面在执行时被转发成普通的java文件,编译成class文件,并将class类实例作为对象,接受客户端提交参数。其原理是用户通过浏览器向服务器发送页面请求,服务器加载并执行JSP页面,接受客户请求,并将处理结果发送给浏览器。
指令(directives)用来提供整个JSP网页的信息,并用来设定JSP网页的相关属性:
JSP的指令为:page、include、taglib三种指令,每一种指令都有自己的属性。
page指令:
<%@page import="java.utl.*"%>
<%@page contentType="text/html;charset=UTF-8"%>
<%@page language="java" import="java.utl.*" pageEncoding="UTF-8"%>
include指令:
include指令表示,在JSP编译时包含一个文本或者代码的文件,在这个包含过程是静态的,包含的文件可以是jsp网页,html网页、文本文件,或者一段java程序。注意尽量不要在包含文件中出现<html></html>、<body></body>、<head></head>,因为这会影响原JSP网页中相同的标签,可能会导致不必要的错误。
<%@include file="index.jsp"%>
include指令只有一个file属性,表示包含文件的路径地址。<%@include%>指令是静态包含其他文件。
taglib指令:
taglib能够让我们自定义标签。语法如下:
<%@taglib prefix="" uri="taglib的url地址"%>
属性:
prefix 主要用来区分多个自定义标签
uri 用来指定taglib的url地址
<%!%> //主要声明JSP中需要的变量和方法,可以一次声明多个变量和方法。但是每个方法或变量必须以分号结束。这些变量都是全局变量。
<%%> //脚本 声明变量常用<% %>来声明
<%=%> // 表达式
脚本中可以包含有效的java程序片段:脚本原始以<%开头、以%>结尾。
JSP页面展示时的输入方法:存在out对象中通过print()方法中显示出来。
一是不能以分号作为表达式的结束符号;二是表达式中可以包含任何java语法,有时候也可以作为其他JSP元素的属性值。
JSP内置对象:【编写jsp文件时不用做任何声明即可使用的对象】
out // javax.servlet.jsp.JspWriter 数据流标准输出
request // javax.servlet.http.HttpServletRequest 请求端信息
response // javax.servlet.http.HttpServletRequest 响应端信息
session // javax.servlet.http.Session 服务器与客户端建立的会话
request:在JSP中除了可以使用窗体隐藏字段传递外,还可以使用setAttribute()和getAttribute()方法。使用范围是JSP发送一个请求到另一个JSP后便会失效。
response:响应对象主要是将JSP处理的数据结果返回给客户端。
session:session对象表示目前个别用户的会话状况,用此机制可以轻易辨别每一个用户,然后可以根据用户的不同给出正确的响应。
session对象也可以储存与用户相关的数据,当用户发送请求到某个*.action时将用户信息存入session中,当这个action请求结束以后,我们可以从这个session中获取到用户信息。
代码如下:
jsp中将用户信息记录到session:
session.setAttribute("username",username);
从session中获取到用户信息:
<%String name = (String)session.getAttribute("username");%>
关于url地址的重定向方法:
方式1、在struts2的配置文件struts.xml相关信息中配置重定向信息:
这个是在action中配置重定向信息,在java web的action层中经常会用到。
<result type="reditect">
${reditectUrl}
</result>
在action中先定义全局变量reditectUrl,并增加getter和setter方法,拼接reditectUrl,最后返回结果信息。当success时获取reditectUrl,并重定向到这个url.
方式2、在jsp页面中的重定向:
response.sendRedirect("authuser.jsp");
response为jsp的内置对象,可以直接用这个对象调用sendRedirect()。意思就是讲当前的页面重定向到authuser.jsp,jsp路径为重定向跳转的页面文件的相对路径或URL以字符串形式写在括号内。
方式3.、服务器端的请求转发到index.jsp:
request.getRequestDispatcher("index.jsp").forward(request,response);
意思就是讲当前的页面重定向到index.jsp,jsp路径为重定向跳转的页面文件的相对路径或URL以字符串形式写在括号内。
服务器端和客户端的跳转:
request.getRequestDispatcher()是服务器端跳转
response.sendRedirect()是客户端跳转
sendRedirect是通知浏览器再次提交一个http请求,
dispatcher是直接转到目的地址,最直接得表现
方式4、JS实现页面跳转:
<script>
放你做通加的javascrpt代码,例如google的js
window.location.href="www.baidu.com"
</script>
JSP其他内置对象:
内置对象----
application:从Servlet配置对象获得的Servlet上下文:比如在getServletConfig(),getContext()的调用中
exception:表示JSP页面运行时产生的异常
pageContext:本JSP的页面上下文
page:实现处理本页当前请求的类的实例
config:本JSP的ServletConfig
<%@ page language="java" import="java.util.*"pageEncoding="UTF-8"%>
<%@page import="com.feixun.oauth2.common.util.AuthUserUtil"%>
<%@page import="com.feixun.common.baseinfo.UserInfo"%>
<%@ taglib uri="/struts-tags"prefix="s"%>
<%
String path = request.getContextPath();
String basePath =
request.getScheme() + "://" +request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<base href="<%=basePath%>" />
<title><s:text name="interfaces.oauth.login.pagetitle.message"/></title> <title>表示标题
<meta http-equiv="pragma"content="no-cache"/>
<meta http-equiv="cache-control"content="no-cache"/>
<meta http-equiv="expires"content="0"/>
<meta http-equiv="Content-Type"content="text/html;charset=utf-8" />
<!-- 引用的js文件要在head标签中定义-->
<link rel="stylesheet" href="customize/resources/default/css/basic.css"type="text/css"/>
<link rel="stylesheet" href="customize/resources/default/css/account.css"type="text/css"/>
<link rel="stylesheet" href="customize/resources/default/css/popLayer.css"type="text/css"/>
<script src="customize/js/jquery.js"></script>
<script src="customize/js/basic.js"></script>
<script src="customize/js/Droplist.js"></script>
<script type="text/javascript" src="customize/js/radio.js"></script>
<script src="customize/js/popLayer.js"></script>
<script src="customize/js/PopWin.js"></script>
<script type="text/javascript" src="customize/js/AutoComplete.js"></script>
<jsp:include page="otpscript.jsp"/>
</head>
</head>
<body>
正文主体
<div id="head"><%@includefile="header.jsp"%></div> <!--引入jsp文件->
<!—html标签、CSS样式、JS脚本-->
</body>
</html>
otpscript.jsp
<%@ page language="java" import="java.util.*"pageEncoding="UTF-8"%>
<%@page import="com.opensymphony.xwork2.ActionContext"%>
<%@ taglib uri="/struts-tags"prefix="s"%>
<%@page import="com.feixun.common.baseinfo.UserInfo"%>
<%
Locale locale =ActionContext.getContext().getLocale();
String language =locale.getLanguage();
%>
<script type="text/javascript">
<%-- 加载鉴权方式 --%>
if(window.attachEvent)
{
window.attachEvent("onload",function() {loadPage();});
}
else
{
window.addEventListener("load",function() {loadPage();},true);
}
function loadPage()
{
if('<s:propertyvalue="imgVerifyConfigValue" />'=='1')
{
document.getElementById("input_imgvcode").style.display="";
}
else
{
document.getElementById("input_imgvcode").style.display="none";
}
- java西天取经之路(三)JSP技术学习要点
- java西天取经之路(一)Servlet技术学习总结
- java西天取经之路(四)JSP标签库 【EL和JSTL】
- java西天取经之路(二)Servlet部署和配置
- java西天取经之路(七)struts2初步--Action的配置
- 西天取经真相之二(悟空采访实录)
- 西天取经采访(时寒冰先生大作)
- JS的取经之路(三)
- Java 取经之路
- 西天取经真相之二(悟空采访实录) 转自时寒冰博客
- 西天取经真相
- 西天取经后续
- 西天取经真相之二(悟空采访…
- 马云西天取经记
- 话八戒西天取经 谈现代企业管理
- 西天取经项目小组访谈(个人原创)
- 从西天取经事件看官场潜规则
- JS的取经之路(一)
- 黑马程序员-C语言简介、关键字、标识符、命名规范、注释
- MySQL多表查询
- [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 问题
- 84_1 最快的方式把其中重复的元素找出来
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- java西天取经之路(三)JSP技术学习要点
- 84_2 构造一个随机发生器
- Scala 基础
- js 获取页面及屏幕大小
- springmvc之Excel文件上传并写入数据库
- 【线段树区间修改】hdu3577
- C 格式化输出问题 %2x与%x,有什么区别
- [原]零基础学习视频解码之安装ffmpeg
- Python之禅 by Tim Peters