1. 使用Eclipse开发Web项目(JSP项目)tomacat
2. 在Eclipse中创建的Web项目:
- 浏览器可以直接访问WebContent中的文件
- 例如
http://127.0.0.1:8888/MyJspProject/index1.jsp
- 其中的index1.jsp就在WebContent目录中;
- 但是WEB-INF中的文件 无法通过客户端(浏览器)直接访问,只能通过请求转发来访问
注意:并不是任何的内部跳转都能访问WEB-IN
原因是 跳转有2种方式:请求转发、重定向
3. 配置tomcat运行时环境
jsp<->Servlet
- 将tomcat/lib中的servlet-api.jar加入项目的构建路径
- 右键项目->Build Path ->Add library->Server RUntime
4. 部署tomcat
在servers面板 新建一个tomcat实例,再在该实例中,部署项目(右键 add)之后运行
[注意]:一般建议将eclipse中的tomcat与本地tomcat的配置信息保持一致,将eclipse中的
tomcat设置为托管模式:[第一次]创建tomcat实例之后,双击,选择Server Location的第二项
5. 统一字符集编码
5.1. 编码分类:
-
设置jsp文件的编码 (jsp文件中的pageEncoding
属性): jsp->java
-
设置浏览器读取jsp文件的编码(jsp文件中content属性)
-
一般将上述设置成一致的编码,推荐使用UTF-8
文本编码:
-
将整个eclipse中的文件,统一设置(推荐)
-
设置 某一个项目
-
设置单独文件
6. JSP的页面元素:HTML java代码(脚本Scriptlet)、指令、注释
6.1 脚本Scriptlet:
<%
局部变量、java语句
%>
<%!
全局变量、定义方法
%>
<%=输出表达式 %>
<%
String name = "zhangsan";
out.print("hello, " + name);
%>
<%!
public String bookName;
public void init(){
bookName = "java书籍";
}
%>
<%="hello, " + name %>
一般而言,修改web.xml、配置文件、java 需要重启tomcat
但是如果修改Jsp\html\css\js,不需要重启
[注意]
out.print & out.println()
不能回车,想要回车:"<br/>
",即out.print()
和<%= %>
可以直接解析html代码
[解释]
先把java代码执行好,然后渲染到页面上
6.2 指令
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" %>
6.3 注释
- html注释
<!-- --->
可以被客户通过浏览器查看源码所观察到 - java注释
//
/*...*/
- jsp注释
<%-- --%>
7. JSP九大内置对象(自带的,不需要new 也能使用的对象)
1. out
输出对象,向客户端输出
2. request
请求对象,存储 客户端向服务端发送的请求信息
request对象的常见方法:
String getParameter(String name)
: 根据请求的字段名Key(input标签的name属性值),返回字段值Value(nput标签的value属性值)String[] getParameterValues(String name)
: 根据请求的字段名Key,返回多个字段值Value(checkbox)void setCharacterEncoding("编码格式utf-8")
; 设置post方式的请求编码(tomcat7以前默认iso-8859-1,tomcat8以后改为了utf-8getRequestDispatcher("b.jsp").forward(request.response);
:请求转发的方式跳转页面 A->BServletContext getServerContext()
:获取项目的ServletContext对象
示例:
注册页面
- register.jsp
- show.jsp
http://localhost:8888/MyJspProject/show.jsp?uname=ls&upwd=123&uage=28&uhobbies=%E7%AF%AE%E7%90%83
连接/文件?参数名1=参数值1&参数名2=参数值2 &参数名3 =参数值3
- get提交方式: method=“get” 和 地址栏 、超链接(
<a href="xx">
) 请求方式默认都属于get提交方式
get和post请求方式的区别
- get方式在地址栏显示请求信息(但是地址栏能够容纳的信息有限,4-5KB ;如果请求数据存在大文件,图片等会出现地址栏无法容纳全部的数据而出错);post不会显示
- 文件上传操作,必须是post
推荐使用post
代码
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="UTF-8">
<title>register.jsp--request</title>
</head>
<body>
<form action="show.jsp">
用户名:<input type="text" name="uname" id=""><br>
密码:<input type="password" name="upwd" id=""><br>
年龄:<input type="text" name="uage" id=""><br>
爱好:
<input type="checkbox" name="uhobbies" id="" value="足球">足球、
<input type="checkbox" name="uhobbies" id="" value="篮球">篮球
<input type="checkbox" name="uhobbies" id="" value="乒乓球">乒乓球<br>
<input type="submit" value="注册">
</form>
</body>
</html>
show.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="UTF-8">
<title>show.jsp--request</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");
%>
注册成功,信息如下:<br>
姓名:<%=name %> <br>
年龄:<%=age %> <br>
密码:<%=pwd %> <br>
爱好:<br>
<%
if (hobbies != null) {
for (String hobby: hobbies) {
out.print(hobby + " ");
}
}
%>
</body>
</html>
8. 统一请求的编码 request
如果request编码不一致,我们怎么通过代码统一
get方式请求 如果出现乱码
解决:
- 统一每一个变量的 编码(不推荐)
new String(旧编码,新编码);
name = new String(name.getBytes("iso-8859-1"),"utf-8");
- 修改server.xml,一次性的 更改tomcat默认get提交方式的编码(utf-8)
建议使用tomcat时,首先在server.xml中 统一get方式的编码…URIEncoding=“UTF-8”
<Connector URIEncoding="UTF-8" connectionTimeout="20000" maxHttpHeaderSize="8192" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
之后通过get请求方式,都用UTF-8编码
tomcat7(iso-8859-1)
tomcat8(utf-8)
post方式请求 如果出现乱码,解决
setCharacterEncoding(“编码格式utf-8”);设置post方式的请求编码(tomcat7以前默认iso-8859-1,tomcat8以后改为了utf-8
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)