JavaWeb学习
来源:互联网 发布:mysql字符串长度 编辑:程序博客网 时间:2024/06/07 10:45
JavaWeb学习
JSP
概述:
Java Server Pages:一种基于Java语言的应用开发技术。
JSP页面:
在传统的HTML页面文件中加入Java程序片和JSP标记就构成了一个JSP页面文件,按文本文件保存,拓展名为.jsp。
基本结构:
JSP页面可由5种元素组合而成:
① 普通的HTML标记符;
② JSP标记,如指令标记、动作标记;
③ 变量和方法的声明;
④ Java程序片;
⑤ Java表达式 ;
jsp成员变量和方法的声明:
<%! %>
之间声明变量或方法,方法在整个页面上有效。
<%! %>和<% %>声明变量的区别:
如以下两段简单的代码:
<%@ page contentType="text/html;charset=GBK" %><HTML> <BODY BGCOLOR=cyan> <FONT size=4> <%! int i=0; %> <% i++; %> <P>您是第 <%=i%> 个访问本站的客户。 </FONT> </BODY></HTML>
<%@ page contentType="text/html;charset=GBK" %><HTML> <BODY BGCOLOR=cyan> <FONT size=4> <% int i=0; %> <% i++; %> <P>您是第 <%=i%> 个访问本站的客户。 </FONT> </BODY></HTML>
在上面的两段简单的代码中,可以看到,除了变的声明方式不一样,其余的都一样,但运行界面却不相同。
第一段代码中,只要不重新启动服务,连续刷新页面,页面访问的次数会增加;
而对于第二段代码,无论是否重启服务,每次刷新页面,访问页面的次数均为1。
由此可以看出:
使用<%! %>声明的变量,在一次服务中的各个页面均有效,其定义的内容在一次服务的所有页面中实现共享;
而使用<% %>声明的变量仅仅在当前页面有效,声明的内容不可共享。
表达式:<%= %>
“ <%=”和“%>”之间可以是一个Java表达式 。
表达式的值由服务器负责计算,并将计算结果用字符串形式发送到客户端显示。
示例:
<%@ page contentType="text/html;charset=utf-8" %><HTML> <BODY BGCOLOR=cyan> <h3>这是一个简单的JSP页面</h3> <% int i, sum=0; for(i=1;i<=100;i++) { sum=sum+i; } %> <h5> 1到100的连续和是: <%=sum %> </h5> </BODY></HTML>
运行界面:
<%= %>与<% System.out.println(“ ”)%>有区别吗?
答:有区别。
<%= %>是将内容显示在浏览器的页面上;而<% System.out.println(“ ”)%>语句是将内容输出在控制台上。
第二次执行
JSP指令标记:
JSP指令(directive)告诉引擎如何处理JSP页面中的其余部分。
JSP指令:
JSP指令的基本语法格式:
<%@ 指令 属性名=”值” %>
如果一个指令有多个属性,这多个属性可以写在一个指令中,也可以分开写。
page指令:
1、用来定义整个JSP页面的一些属性和这些属性的值。
2、属性值用单引号或双引号括起来。
3、page指令的作用对整个JSP页面有效,与其书写的位置无关,习惯把page指令写在JSP页面的最前面。
语法格式:
<%@ page contentType="text/html;charset=gb2312"%>
使用page指令解决JSP中文乱码:
1、通过page指令的contentType属性说明JSP源文件的字符集编码;
2、page指令的pageEncoding属性说明JSP源文件的字符集编码。
Include指令:
在JSP页面出现该指令的位置处,静态插入一个文件。
语法格式:
<%@ include file= "文件的URL " %>
注意:
1、如果该文件和当前JSP页面在同一Web服务目录中,那么“文件的URL”就是文件的名字;
2、如果该文件在JSP页面所在的Web服务目录的一个子目录中,比如fileDir子目录中,那么“文件的URL”就是“fileDir/文件的名字”。
3、静态插入,就是当前JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。
4、 file属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前文件。
taglib指令:
用于在JSP页面中导入标签库。
语法格式:
<%@ taglib uri="" prefix="c"%>
1、uri属性:定位标签库描述符的位置。唯一标识和前缀相关的标签库描述符,可以使用绝对或相对URL。
2、 prefix属性:标签的前缀,区分多个自定义标签。
示例:
<%@ taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSP动作标记:
用于在JSP页面中提供业务逻辑功能。
JSP常用标签:
<jsp:include>标签 <jsp:forward>标签 (转页面)<jsp:param>标签<jsp:plugin>标签<jsp:useBean>标签
1、include 动作标记
<jsp:include> 标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。
语法格式:
<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />
2、param动作标记
param标记以“名字-值”的形式为其它标记提供附加信息。
语法格式:
<jsp:param name=“名字” value=“指定给param的值”>
注意:
1、 param标记不能独立使用,需作为jsp:include、jsp:forward、jsp:plugin标记的子标记来使用。
2、当该标记与jsp:include动作标记一起使用时,可以将param标记中的值传递到include动作标记要加载的文件中去,被加载的JSP文件可以使用Tomcat服务器提供的request内置对象获取include动作标记的param子标记中name属性所提供的值 。
3、forward动作标记
从该指令处停止当前页面的继续执行,而转向执行page属性指定的JSP页面。
语法格式:
<jsp:forward page="relativeURL | <%=expression%>" />
4、plugin动作标记
该动作标记指示JSP页面加载Java plugin插件。该插件由用户负责下载,并使用该插件来运行Java applet小程序。
语法格式:
<jsp:plugin type="applet" code="小程序的字节码文件" jreversion="java虚拟机版本号" width="小程序宽度值" height="小程序高度值" ><jsp:plugin type="applet" code="小程序的字节码文件" jreversion="java虚拟机版本号" width="小程序宽度值" height="小程序高度值" >
JSP内置对象:
1. request
封装了用户请求页面时所提交的信息,该对象调用相应的方法可以获取封装的信息.即request对象可以获取用户提交的信息。
例如用户提交信息表单:
<FORM action="tom.jsp" method=post > <INPUT type="text" name="boy" value="ok" > <INPUT TYPE="submit" value="送出" name="submit"></FORM>
提交表单的汉字信息处理:
String str=request.getParameter("boy");byte b[]=str.getBytes("ISO-8859-1");str=new String(b,"utf-8");
2. response
在某些情况下,JSP引擎在响应用户时,可能需要将用户重新引导至另一个页面。
例如,如果用户输入的表单信息不完整,就会再次被引导到该表单的输入页面。
使用response对象的sendRedirect(URL url)方法实现用户的重定向。 cookie/session。
3. out
out对象是一个输出流,用来向用户端输出数据。
4. session
Session用于跟踪客户的状态。
5. application
任何客户在所访问的服务目录的各个页面浏览时,application对象都是同一个。
6. config
7. pagecontext
8. page
9. exception
练习:
需求:从页面上输入一个姓名,提交后在另一个页面中显示,并解决汉字乱码问题。
index.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> This is my first page!<br> <form action="helloservlet.html" method="post"> 姓名:<input type="text" name="name"> <input type="submit" value="提交"> <input type="reset" value="重置"> </form> </body></html>
web.xml:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>HelloServlet</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.zkrt.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/helloservlet.html</url-pattern> </servlet-mapping></web-app>
HelloServlet:
package com.zkrt.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class HelloServlet */@WebServlet("/HelloServlet")public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public HelloServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String name=request.getParameter("name"); byte b[]=name.getBytes("ISO-8859-1"); name=new String(b,"utf-8"); response.setContentType("text/html;charset=utf-8"); response.getWriter().append("Served at: ").append(request.getContextPath()); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is :"); out.println(name); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub this.doGet(request, response); }}
页面展示:
第一个页面,输入姓名后提交。
第二个页面,将输入的信息展示出来。
- JavaWeb 学习
- javaweb学习
- javaweb学习
- javaWeb学习
- JavaWeb学习
- JavaWeb学习
- JavaWeb学习
- JavaWeb学习
- JavaWeb学习
- javaWeb学习
- 宝宝 javaweb 学习总结
- javaweb学习总结(体会)
- JavaWeb学习中
- javaweb学习文档
- JavaWeb学习(1)
- JavaWeb学习(2)
- JavaWeb 学习轨迹
- JavaWeb学习路线
- 密码游戏
- 第三章:vue2中关于数据的处理
- Java 简介_主要特性
- Linux性能监控工具sysstat系列:介绍与安装
- HTML5基础入门(笔记分享)
- JavaWeb学习
- 第九章 聚类
- atitit 项目管理 package 模块管理 包管理 依赖管理 maven attilax总结.docx
- C++数据结构---链表---插入操作
- 第四章:vue2中使用过滤器
- @RequestBody与@ResponseBody
- u-boot
- The Tower of Babylon UVA
- 笔记:ubuntu 14.04/16.04(linux)下离线批量安装依赖库,caffe,cuda8.0