Eclipse与web开发(jsp项目)
-
1.使用Eclipse开发Web项目(JSP项目)
-
- 先将Eclipse与jtomcat关联
- 先将Eclipse与jtomcat关联
- 2.在Eclipse中创建的web项目:
-
浏览器可直接访问WebContent中的文件,在WEB-INF中的文件无法通过客户端(浏览器)直接访问,只能通过请求转发来访问
注意:并不是任何的内部跳转都能访问WEB-INF:原因是跳转有两种方式:请求转发、重定向。
3.配置tomcat运行环境
-
解决:The superclass “javax.servlet.http.HttpServlet” was not found on the Java Bu
https://jingyan.baidu.com/article/f79b7cb34f40569144023ef9.html.
4.部署tomcat
-
在servers面板新建一个tomcat实例,再在该实例中部署项目(右键–>add)之后运行
注意:一般建议将eclipse中的tomcat与本地tomcat的配置信息保持一致,将eclipse中的tomcat设置为托管模式:【第一次】创建tomcat实例之后,双击,选择Server Location的第二项。
5.统一字符集编码
-
a. 编码分类:
设置jsp文件的编码(jsp文件中的pageEncoding属性):jsp—>java
设置浏览器读取jsp文件的编码(jsp文件中的content属性)
一般将上述设置为一致编码(utf-8)
6.JSP页面元素:HTML 、java代码(脚本Scriptlet)、指令、注释
- a.脚本Scriptlet
<%
局部变量、java语句
%>
<%!
全局变量、定义方法
%>
<%= 输出表达式 %>
<%!
public String bookName;//全局变量
public void init(){
bookName="java";
}
%>
<%
String name="zhnagsan";
out.print("hello..."+name+"<br/>");
%>
<%="hello<br/>"+bookName%>
一般而言,修改web.xml、配置文件、java需要重启tomcat服务器
但是如果修改jsp\html\css\js,不需要重启。
注意:out.println()不能回车,要想回车:"<br/>"
即:out.print()和<%=%>可以直接解析HTML代码
-
b.指令
-
page指令:<%@ page·········%>
language:jsp页面使用的脚本语言
import:导入类
pageEncoding:jsp文件自身编码 jsp---->java
contentType:浏览器解析jsp的编码
c.注释
html注释:<!---->
java注释:// /**/
jsp注释:<%-- --%>
7.JSP内置对象(自带的,不需要new也能使用的对象)
-
out:
输出对象,向客户端输出内容 -
request:
请求对象,存储“客户端向服务端发送的请求信息”
request对象的常见方法:
String getParameter(String name):根据请求字段名key,返回字段值value(input标签的name属性)
String[] getParameterValues(String name):根据请求的字段名key,返回多个字段值value(CheckBox)
void setCharacterEncoding(“编码格式UTF-8”):设置post请求编码
getRequestDispatcher(“b.jsp”).forward(request,response);:请求转发的方式跳转页面 A–>B
servletContext getServerContext():获取项目的ServletContext对象
注:
get方式:
method=“get” 和地址栏、超链接<a href="xx">
请求方式默认为get提交方式
get与post提交方式的区别:
a. get方式在地址栏显示请求信息;post不会显示
b.文件上传操作,必须是post
推荐使用post -
response:
响应对象,向服务器端发送内容
response对象的常见方法:
void addCookie(Cookie cookie); :服务端向客户端增加cookie对象
void sendRedirect(String location) throws IOException;:页面跳转的一种方式(重定向)
void setContetType(String type);:设置服务端响应的编码(设置服务端的contetType类型)
区别 | 请求转发 | 重定向 |
---|---|---|
代码形式 | getRequestDispatcher(“b.jsp”).forward(request,response); | response.sendRedirect(“index1.jsp”); |
地址栏是否改变 | 不变 | 改变 |
是否保留第一次请求时的数据 | 保留 | 不保留 |
请求次数 | 1 | 2 |
- session(服务端):
会话对象
先了解:
Cookie(客户端,不是内置对象):Cookie是由服务端生成的,再发送给客户端保存,相当于本地缓存。
作用:提高访问服务端的效率,但是安全性较差。
Cookie:key=value
javax.servlet.http.Cookie
public Cookie(String key,String value)
String getName();:获取name
String getValue();:获取value
void setMaxAge(int expiry);:最大有效期(秒)
服务端准备Cookie:
response.addCookie(Cookie cookie);
页面跳转(转发,重定向)
客户端获取cookie(只能一次将全部cookie获取):
request.getCookies();
session机制:
客户端第一次请求服务端时:服务端会产生一个session对象(用于保存该客户的信息);
并且每一个session对象都会有一个唯一的sessionId(用于区分其他session);
服务端会产生一个cookie,并且该cookie的name=JSESSIONID,value=服务端sessionId的值;
然后服务端会在响应客户端的同时将该cookie发送给客户端,至此客户端就有了一个cookie(JSESSIONID);
客户端第二/n次请求服务端时:服务端会先用客户端cookie中的JSESSIONID去服务端的session中匹配sessionId。
session方法:
String getId();:获取sessionId
boolean isNew();:判断是否是新用户(第一次访问)
void invalidate();:使session失效(退出登录、注销)
void setAttribute();
Object getAttribute();
void setMaxInactiveInterval(秒):设置最大有效非活动时间
区别 | session | cookie |
---|---|---|
保存的位置 | 服务端 | 客户端 |
安全性 | 较安全 | 较不安全 |
保存的内容 | Object | String |
-
application:
全局变量,获取当前项目的全部信息
application方法:
String getContextPath();:获取虚拟路径
String getRealPath();:获取绝对路径 -
pageContext:
JSP页面容器 -
config:
配置对象(服务器配置信息) -
page:
当前JSP页面对象(相当于java中的this) -
exception:
异常对象
-
8.统一请求的编码 request(针对tomcat7)
- get方式请求 如果出现乱码,解决:修改server.xml,一次性的更改tomcat默认get提交方式的编码(utf-8):URIEncoding=“UTF-8”