JSP_day01笔记

JSP概述

  • JSP(Java Sever Pages)

运行在服务器端的Java页面
使用HTML嵌套Java代码实现

  • 新建jsp页面
<%@ page language="java" import="java.util.Arrays"
	contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>第一个jsp页面</title>
</head>
<body>
</body>
</html>
  • 设置JSP页面属性:page

语法:
<%@ page language=“属性值” import=“属性值” contentType=“属性值”%>
注释:
language:指定JSP页面使用的脚本语言
import:通过该属性来引用脚本语言中使用到的类文件(导包)
contentType:用来指定页面的MIME类型,以及字符编码方式

  • 声明变量

<%%>声明局部变量
<%!%>声明全局变量

  • 实现页面输出

1、使用out对象

  • out对象是JSP的内置对象
  • 无需实例化即可使用
  • 实现数据的输出显示
out对象的方法说明
print()向页面输出显示
println()想页面输出显示,在结尾处添加换行

2、<%=%>
如:<%=title%>(无;)
示例:使用Java来输出HTML标签

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    //	导包 关键字import
    <%@ page import="java.util.*" %>
    <%@ page import="java.util.Map.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>使用Java来输出HTML标签</title>
<!--创建集合ids,names-->
<% List ids = new ArrayList(); %>
<% List names = new ArrayList(); %>
<%
// 添加元素
ids.add(1);
ids.add(2);
ids.add(3);
names.add("家具");
names.add("文具");
names.add("玩具");
%>
</head>
<body>
<!-- 使用Java来输出HTML标签 -->
<%
//	使用out对象输出
out.print("<table>");
out.print("<tr><td>种类编号</td><td>种类名称</td></tr>");
for(int i=0;i<ids.size();i++){
	out.print("<tr><td>"+ids.get(i)+"</td><td>"+names.get(i)+"</td></tr>");
}

out.print("</table>");
%>

<!-- 将Java代码和html标签分离-->
<table>
<tr><td>种类编号</td><td>种类名称</td></tr>
<%
for(int i=0;i<names.size();i++){
%>
	// 使用<%=%>方式输出
	<tr><td><%=ids.get(i) %></td><td><%=names.get(i) %></td></tr>
<%
}
%>
</table>

<!--拓展练习-->
<!-- 将输出到select标签中 -->
<%
Map<Integer,String> cts = new HashMap<>();
cts.put(1, "玩具");
cts.put(2, "文具");
cts.put(3, "书籍");
%>
<%
Set<Entry<Integer,String>> e = cts.entrySet();
Iterator<Entry<Integer,String>> it = e.iterator();
%>
<select name="ct_id">
<%
while(it.hasNext()){
	Entry<Integer,String> entry = it.next();
%>
<option value="<%=entry.getKey() %>"><%=entry.getValue() %></option>
<%
}
%>
</select>
<br />

<!-- 将输出到radio标签中 -->
<%
Set<Integer> keySet = cts.keySet();
for(Integer key:keySet){
%>
<input type="radio" name="ctl" value="<%=key %>" /><%=cts.get(key) %>&nbsp;&nbsp;&nbsp;
<%
}
%>
</body>
</html>
  • 添加注释

HTML注释:<!–HTML注释-- >
JSP注释:<%–JSP注释–%>
JSP脚本中注释:<%//单行注释%>、 <%/多行注释/%>

  • 常见错误

404错误—找不到访问的页面或资源

  • 运行时,URL输入错误
  • 将页面放在WEB-INF下
  • 外部启动Tomcat,未部署项目

500错误----JSP页面代码有误

  • JSP页面代码有错误

页面无法显示

  • 未启动Tomcat
  • 数据的传递

请求对象:request

方法说明
String getParameter(String name)根据表单组件名称获取提交数据
String[] getParameterValues(String name)获取表单组件对应多个值时的请求数据
void setCharacterEncoding(String charset)指定每个请求的编码
RequestDispatcher getRequestDispatcher(String path)返回一个RequestDispatcher对象,该对象的forward()方法用于转发请求

示例:

<!--单个-->
<input type="text" name="userName">
String userName=request.getParameter("userName");
<!--多个-->
<input type="checkbox" name="hobby" value="1" />足球
<input type="checkbox" name="hobby" value="2" />篮球
<input type="checkbox" name="hobby" value="3" />排球
String[] hobbies=request.getParameterValues("hobby");

响应用户请求:response
示例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");

String cu_name=request.getParameter("cu_name");
String cu_phone=request.getParameter("cu_phone");
//	假设用户名是刘德华,密码是9999
//	正确跳转至欢迎页面,如果不正确而返回登陆页面
if("刘德华".equals(cu_name) && "9999".equals(cu_phone)){
	//显示传递
	response.sendRedirect("/web02/welcome.jsp?cu_name="+cu_name);
	
	//隐式传递
	//.getRequestDispatcher("")将页面跳转 里面接收页面的跳转地址
	//.forward(request, response)将当前页面中的request和response两个对象,直接传递给下一个页面
	//request.getRequestDispatcher("welcome.jsp").forward(request, response);
	
	/*两者的区别
	 localhost:8080/web02/welcome.jsp?cu_name=???
	 localhost:8080/web02/login1.jsp?cu_name=%E5%88%98%E5%BE%B7%E5%8D%8E&cu_phone=9999
	 
	 response属于客户端行为 是由客户端(浏览器行为)来发起跳转请求的
	 request属于服务端行为是由服务器内部来进行跳转的 如果服务器跳转了页面的地址 浏览器不知道 所以浏览器的地址还保留在上一个页面的地址
	*/
}else{
	//	返回登陆界面
	//	response.sendRedirect("接收1个字符串的参数 为需要跳转的地址");
	response.sendRedirect("/web02");
	
	//	另一种方法,用的较少不推荐
	//out.print("<script type='text/javascript'>location.href='/web02'</scropt>");
}
%>
</head>
<body>
</body>
</html>
  • 内置对象:可直接使用的对象
说明对象
请求对象request
输出对象out
响应对象response
应用程序对象application
会话对象session
页面上下文对象pageContext
页面对象page
配置对象config
异常对象exception
  • 解决中文乱码
  • JSP中默认使用的字符编码方式:iso-8859-1(不支持中文)
  • 支持中文的常见编码如下表:
编码方式收录的字符
gb2312常用简体汉字
gbk简体和繁体汉字
utf-8所有国家需要的字符

设置请求和响应的编码方式
request.setCharacterEncoding(“utf-8”);
response.setCharacterEncoding(“utf-8”);
<%@ page language=“java”
contentType=“text/html; charset=utf-8”%>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值