0、项目环境的建立:
参考博客:https://www.cnblogs.com/cq0143/p/10674637.html
1.jsp基础知识:
JSP的页面元素:
- HTML:
- java代码(脚本Scriptlet):
- 指令:
- 注释:
1.1.脚本Scriptlet
i.
<%
局部变量、java语句
%>
ii.
<%!
全局变量、定义方法
%>
iii.
<%=输出表达式 %>
例子程序:
<%@ 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> hello index.jsp <%="我是大傻逼2" %> <% String kk = "张三"; out.print(kk); init(); %> <%="我是大傻逼1" %> <%! public String name; public void init(){ name = "。。java 书。。"; } %> iii. <%="我是大傻逼" %> </body> </html>
jsp代码是从上往下依次执行。
打开tomcat,从浏览器访问这段代码的输出如下:
TIPS:
- <%="输出表达式" %> 等价于 out.print("输出表达式");
- 注意前者,最后没有分号;后者最后有分号。
- 一般而言,修改web.xml、配置文件、java 需要重启tomcat服务,但是如果修改 Jsphtmlcssjs ,不需要重启。
- out.println()不能回车; 要想回车得加“<br/>”,如out.println("name"+"<br/>"),又如 <%="he<br/>llo" %>,即out.print(表达式) 和<%= 表达式%> 可以直接解析 【表达式】中的html代码。
1.2.指令
page指令 <%@ page ....%>
page指定的属性:
- language:jsp 页面使用的脚本语言
- import: 导入类
- pageEncoding: jsp文件自身编码 jsp ->java
- contentType: 浏览器解析jsp的编码
例子:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.Date" %>
1.3.注释
- html注释 <!-- --> ,可以被客户 通过浏览器查看源码 所观察到
- java注释 // /*...*/
- jsp注释 <%-- --%>
1.4.JSP内置对象:
(自带的,不需要new 也能使用的对象。总共有九个,这里介绍两个。)
- out: 输出对象,向客户端输出内容
- request: 请求对象;存储“客户端向服务端发送的请求信息”
- request对象的常见方法:
- String getParameter(String name) :根据请求的字段名key (input标签的name属性值) ,返回字段值value (input标签的value属性值)
- String[] getParameterValues(String name): 根据请求的字段名key ,返回多个字段值value (checkbox)
- void setCharacterEncoding("编码格式utf-8") :设置post方式的请求编码 (tomcat7以前默认iso-8859-1,tomcat8以后改为了utf-8)
- getRequestDispatcher("b.jsp").forward(request,response) ; :请求转发 的方式跳转页面 A - > B
- ServletContext getServerContext():获取项目的ServletContext对象
2.使用request对象实现注册示例:
2.1、在MyJspProjet/WebContent下新建两个jsp文件:register.jsp 、show.jsp。
小技巧:
右键项目==》new==》other(也可以右键项目后直接ctrl+N,可以打开文件创建向导,可以通过搜索的办法创建想要的文件类型。
register.jsp(注意编码格式,这里统一设置为utf-8):
<%@ 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> <form action="show.jsp" > 用户名:<input type="text" name="uname"><br/> 密码:<input type="password" name="upwd"><br/> 年龄:<input type="text" name="uage"><br/> 爱好:<br/> <input type="checkbox" name="uhobbies" value="足球">足球 <input type="checkbox" name="uhobbies" value="篮球">篮球 <input type="checkbox" name="uhobbies" value="乒乓球">乒乓球<br/> <input type="submit" name="注册"> </form> </body> </html>
show.jsp(注意编码格式,这里统一设置为utf-8):
<%@ 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> <% request.setCharacterEncoding("utf-8"); String name = request.getParameter("uname"); int age = Integer.parseInt(request.getParameter("uage")); String pwd = request.getParameter("upwd"); String [] hobbies = request.getParameterValues("uhobbies"); %> 获得的信息如下: 爱好:<%=name %><br/> 密码:<%=pwd %><br/> 年龄:<%=age %><br/> <% for(String temp:hobbies){ out.print(temp+"<br/>"); } %> </body> </html>
TIPS:
<form action="show.jsp" >:默认为get方式,也可以显示设置为get/post: <form action="show.jsp" method="get/post">
get与post请求方式的区别:
- a. get方式 在地址栏显示 请求信息 (但是地址栏能够容纳的 信息有限,4-5KB;如果请求数据存在大文件,图片等 会出现地址栏无法容纳全部的数据而出错) ;post不会显示。
- b. 文件上传操作,必须是post推荐使用post
2.2、统一request请求的编码 :
get方式请求 如果出现乱码,下面办法来解决:
a.统一每一个变量的 编码 (不推荐)
//new String( 旧编码,新编码);
变量名= new String(变量名.getBytes("iso-8859-1"),"utf-8");
b. 修改server.xml ,一次性的 更改tomcat默认get提交方式的编码 (utf-8),
- <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>
- 建议 使用tomcat时, 首先在server.xml中 统一get方式的编码.. URIEncoding="UTF-8"
- tomcat7 (默认iso-8859-1)
- tomcat8(默认utf-8)
post方式:
在show.jsp中,增加如下:request.setCharacterEncoding("utf-8");