JavaWeb
JSP概述
JSP(Java Server Pages)
- 运行在服务器端的Java页面
- 使用HTML嵌套Java代码实现
使用Eclipse创建jsp web项目
然后在Webcontent目录下建立jsp文件
代码示例:
<%@ page language="java" import="java.util.Arrays" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
//<%@ page import="java.util.Arrays"%>也可以这样导包,上面那种方式若想导多种包,包之间用逗号隔开。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>第一个jsp页面 </title>
<% //在<% %>中写java代码
int[] arr = new int[]{1,2,3,4};
%>
</head>
<body>
<h1>你好!!!</h1>
<a href="index02.jsp">第一个jsp页面</a>
<%
for(int i=0;i<arr.length;i++){
out.println(arr[i]) ;
}
%>
<br/>
<%=Arrays.toString(arr) %>
</body>
</html>
page指令
通过属性定义了JSP的特性,实现与JSP容器的通信
语法:
<%@ page language=“属性值” import=“属性值” contentType=“属性值”%>
属性 | 说明 |
---|---|
language | 指定JSP页面使用的脚本语言 |
import | 通过该属性来引用脚本语言中使用到的类文件 |
contentType | 用来指定页面的MIME类型,以及字符编码方式 |
输出:
- out对象
out对象是JSP的内置对象
无需实例化即可使用
实现数据的输出显示 - out对象的方法
属性 | 说明 |
---|---|
向页面输出显示 | |
println | 向页面输出显示,在结尾处添加换行 |
<%out.print();%>或<%out.println(); %>实现页面输出
<%=%>实现页面输出。如: <%=title%>
使用<%%>声明局部变量、使用<%!%>声明全局变量
JSP可以添加的注释:
HTML注释:<!–HTML注释-- >
JSP注释:<%–JSP注释–%>
JSP脚本中注释:<%//单行注释%>、 <%/多行注释/%>
JSP执行过程
Web程序调试和排错
Web程序常见错误:
- 404错误—找不到访问的页面或资源
运行时,URL输入错误
将页面放在WEB-INF下
外部启动Tomcat,未部署项目 - 500错误----JSP页面代码有误
JSP页面代码有错误 - 页面无法显示
未启动Tomcat
jsp实现数据的传递和保存
学习目的:
- 掌握request和response的使用
- 解决页面中出现的中文乱码
- 掌握转发和重定向的区别
- 掌握session存取数据
- 理解cookie和application
获取表单提交的数据
请求对象:request
public String getParameter(String name)
- 示例
HTML代码:
<input type=“text” name=“userName”>
JSP代码:
String userName=request.getParameter(“userName”);
get与post区别
比较项 | get | post |
---|---|---|
参数出现在URL中 | 是 | 否 |
长度限制 | 有 | 无 |
安全性 | 低 | 高 |
URL可传播 | 是 | 否 |
request对象常用方法
方法名称 | 说明 |
---|---|
String getParameter(String name) | 根据表单组件名称获取提交数据 |
String[] getParameterValues(String name) | 获取表单组件对应多个值时的请求数据 |
void setCharacterEncoding(String charset) | 指定每个请求的编码 |
RequestDispatcher getRequestDispatcher(String path) | 返回一个RequestDispatcher对象,该对象的forward()方法用于转发请求 |
登录例题:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> 登录</title>
</head>
<body>
<form action="/web02/login1.jsp" method="post">
名称:<input type="text" name="cu_name"/>
<br/>
密码:<input type="password" name="cu_phone"/>
<br/>
兴趣爱好:
<input type="checkbox" name="happy" value="1" />足球
<input type="checkbox" name="happy" value="2" />篮球
<input type="checkbox" name="happy" value="3" />网球
<input type="checkbox" name="happy" value="4" />排球
<br/>
<input type="submit" value="登录"/>
</form>
</body>
</html>
<%@ 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>接受登录页面传递来的数据</title>
<%
//从index.jps页面传递来的数据 我们使用request来获取
String cu_name=request.getParameter("cu_name"); //前台页面传递过来的 无论是key还是value都是String类型的
String cu_phone=request.getParameter("cu_phone");
String[] happys=request.getParameterValues("happy");//获取同名的多个参数
%>
</head>
<body>
你提交的用户名称是:<%=cu_name %> <br />
你提交的用户电话是:<%=cu_phone %> <br />
你提交的兴趣爱好是:<%=Arrays.toString(happys) %>
</body>
</html>
中文乱码
JSP中默认使用的字符编码方式:(iso-8859-1不支持中文)
如何修改
点 “window”-> “Preferences” ->“JSP Files”->"Encoding"中选择utf-8。
◆常见的支持中文的编码方式
编码方式 | 收录的字符 |
---|---|
gb2312 | 常用简体汉字 |
gbk | 简体和繁体汉字 |
utf-8 | 所有国家需要的字符 |
解决中文乱码
设置请求和响应的编码方式
request.setCharacterEncoding(“utf-8”);
response.setCharacterEncoding(“utf-8”);
<%@ page language=“java” contentType=“text/html; charset=utf-8”%>
get请求出现乱码
- 治标的方法:
new String(s.getBytes(“iso-8859-1”),“utf-8”); - 治本的方法:
配置tomcat\conf\server.xml文件(已经无效了)
<Connector connectionTimeout="20000"port=“8080”
protocol=“HTTP/1.1” redirectPort=“8443” URIEncoding=“UTF-8”/>
转发与重定向
◆转发
RequestDispatcher对象
=forward()方法
语法 1、request.getRequestDispatcher(“url”).forward(request, response)
2、<jsp:forward page=“url" />
◆重定向
将用户请求重新定位到一个新的URL
response.sendRedirect(“url”)
例:
response.sendRedirect("/web03/welcome.jsp?cu_name="+cu_name);