使用eclipse开发WEB项目(jsp项目) tomcat
1在eclipse中配置tomcat
1.打开eclipse在window里面配置
window->preferences->(搜索server,打开Runtime Environments)->点击Add->Apache下选择tomcat版本后点击Next->
选择JRE:
如果JRE 没有自己想要的jre版本,那么点击Installed JREs...下一步Add下一步选择Standard VM
然后选择JRE home(jdk根目录)再点击Finish
2.在面板里面配置
打开Servers控制面板,点击No servers are available,Click link to create a new server...选择tomcat版本后直接Next
打开后出现Add and Remove ,直接点击Finish
接下来创建项目为运行tomcat。
File->New->Others->搜索web(选择其下的Dynamic Web Project)next->接下来命名并在Target runtime选择Tomcat版本
然后进入Web Module界面(单选框要打钩,目的是为了让它自动创建web.xml)
3.访问创建的web项目:
浏览器可以直接访问WebContent中的文件但不能访问WEB-INF内的文件,例如
index1.jsp 在WebContent中但不在WEB-INF,index2.jsp 在WEB-INF中则浏览器不能访问index2.jsp,但能访问index1.jsp。
WEB-INF中的文件 无法通过客户端(例如浏览器)直接访问,只能通过 请求转发 访问
注意:并不是 任何的内部跳转 都能访问WEB-INF;原因是 跳转有两种方式:请求转发、重定向
在配置完tomcat的eclipse里面,有的创建完项目时第一行报错,原因:没有配置tomcat环境
---------------配置tomcat运行时环境----------------
a.将解压的tomcat包中的lib目录下的servlet-api.jar加入项目的构建路径中
b.右键项目->Build Path->Libraries->Add library...->Server Runtime(选择完后点击Next)
4.部署tomcat
在servers面板 新建一个 tomcat实例,再在该实例中 部署项目(右键->Add
)之后运行
注意:一般建议 将eclipse中的tomcat与 本地tomcat的配置信息保持一致:将eclipse中的
tomcat设置为托管模式(Server Locations下的第二项),当【第一次】创建tomcat实例后,
双击,选择该实例,选择Server Locations下的第二项。
5.统一字符集编码
a.编码分类:
设置jsp文件的编码(jsp文件中的pageEncoding属性):jsp->java
设置浏览器读取jsp文件的编码(jsp文件中的content属性)
一般需要将上述设置成 一直编码 推荐使用UTF-8
文本编码:
I.将整个eclipse中的文件 统一设置(推荐使用第一个)
Window->Preferencs->JSP Files里面的Encoding修改为UTF-8(只能对从当前设置以后的文件生效,以前文件的字符编码不会改变)
II.设置 某一个项目中的文件设置为统一编码
右击项目选择Properties->Text file encoding下的others选择UTF-8
III.设置单独文件
右击文件选择Properties->Text file encoding
6.Jsp的页面元素:HTML 、Java代码脚本Scriptlet、注释、指令(jsp开头那一段)
A。脚本Scriptlet
a) <%
局部变量、Java语句
%>
b) <%!
全局变量、定义方法
%>
c) <%=输出表达式%>、
一般而言,修改web.xml、配置文件、Java代码 建议重启tomcat服务
但是如果修改JSP\html\css\js,不需要重启
注意:out.println()不能回车;要想回车:"<br/>"。
out.print()和<%= %> 可以直接解析表达html代码指令。
B。page指令
<%@ page …%>
language:jsp页面使用的脚本语言
import:导入的类(包)
pageEncoding:jsp文件自身编码 jsp->java的编码
contenType:浏览器解析jsp编码
C。注释
html注释<!-- -->,可以被客户通过浏览器查看源码看到
java注释// /* ... */
jsp注释 <%-- --%>
7.jsp内置对象(自带的,不需要new 也能使用的对象)
jsp九大内置对象:
1.out:向客户端输出呢内容
2.request:请求对象;存储"客户端向服务端"发送的请求信息
3.request对象常见方法:
String getParameter(String name):根据请求的字段名key(input标签的name属性) ,返回字段值value(input标签的value属性值)
String[] getParameterValues(String name):根据key返回多个字段值(常见:checkbox多选按钮)
void setCharacterEncoding("编码格式utf-8");设置post方式请求编码(一个页面请求另一个页面时所要发送的解析[请求]编码)
(tomcat7以前默认iso-8859-1,tomcat8以后改为utf-8)
getRequestDispatcher("B.jsp").forword(request,response); 请求转发 的方式跳转 A->B
ServletContext getServerContext(); 获取当前项目的ServletContext对象
示例:
注册register.jsp ,show.jsp
get提交方式:method="get" 和 地址栏 、超链接(<a href="xx">)请求方式 默认都属于get提交方式
get与post请求方式的的区别
a. get方式 在地址栏显示 请求信息(但是地址栏容纳的信息有限,4-5KB,如果请求数据存在大文件,图片等,地址栏会出现无法全部容纳而不能全部全部显示而报错) ;pos不显示
b.文件上传操作,method必须为post方式
推荐使用post
统一请求的编码 request
get方式 如果出现乱码,解决:
a.统一 每一个变量 的编码(不推荐)
new String(旧编码,新编码);
如:name=new String(name.getBytes("iso-8859-1","utf-8");
b.修改server.xml, 一次性的更改tomcat默认get提交方式的编码(utf-8)
建议 使用tomcat时,首先在server.xml中统一get方式的编码。
建议使用tomcat前,首先在server.xml统一get方式的编码,URIEncoding="UTF-8"
post方式
request.setCharacterEncoding("utf-8");
4.response:响应对象
提供的方法:
void addCookie( Cookie cookie);服务端向客户端增加cookie对象
void sendRedirect("a.jap") throws IOException; :页面跳转的一种方式(重定向)
示例:
login.jsp
<%
<form action="check.jsp" method="post">
用户名:<input type="text" name="uname"><br/>
密码:<input type="password" name="upwd"><br/>
<input type="submit" value="登录"><br/>
</form>
%>
check.jsp
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameterValues("uname");
String pwd=request.getParameterValues("upwd");
if(name.equals("zs")&&pwd.equals("123"){假设zs 123
response.sendRedirect("success.jsp");(路径和图片写法一个原理)
//页面跳转: 重定向 导致数据丢失
request.getRequestDispatcher("success.jsp").forword(request,response);
//页面跳转: 请求转发 ,可以获取到数据,并且 地址栏 没有改变(仍然保留原转发前的地址)
}else{
out.print("用户名或密码错误");
}
%>
success.jsp
登录成功!<br/>
欢迎您
<%
String name=request.getParameter("uname");
out.print(name);
%>
login.jsp ->check.jsp -> success.jsp
请求转发和重定向的区别:
页面跳转类型: 请求转发 重定向
地址栏否改变: 不变(check.jsp) 改变(success.jsp)
是否保留第一次
请求时的数据: 保留 不保留 --四种范围对象
请求的次数: 1 2
跳转发生的位置: 服务端 客户端发出的第二次跳转
转发、重定向:
转发:
张三(客户端) -> 【 服务窗口A(服务端) -> 服务窗口B 】
重定向:
张三(客户端) -> 服务窗口A(服务端)->去找B
张三(客户端) -> 服务窗口B(服务端)->结束
void setContentType(String type):设置服务端响应的编码(设置服务端的contentType)
5.Cookie(存在于客户端,不是内置对象):Cookie是由 服务端产生的 ,再发给客户端保存。
相当于 本地缓存的作用: 客户端访问服务端(第一次访问,服务端 发送客户端一个Cookie ,以后可以直接访问客户端)
作用:提高访问服务端的效率,但是安全性较差
Cookie: key<=>value
javax.servlet.http.Cookie 产生对象
这个类库包含的方法:
public Cookie(String name,String value)
String getName() :获取name
String getValue():获取value
void setMaxaAge(int expiry):最大有效期(秒)
服务端准备给客户端:
response.addCookie(Cookie cookie)//增加Cookie
其参数就是服务端产生的对象
页面跳转(转发,重定向)
客户端获取Cookie:request.getCookie()
a.服务端增加cookie:response 对象;客户端获取对象:request对象
b.不能的直接获取某一单独对象,只能一次性将 全部的cookie拿到
response_addCookie.jsp
<%
//服务端产生的
Cookie cookie1=new Cookie("name", "zs");
Cookie cookie2=new Cookie("pwd","123");
//添加
response.addCookie(cookie1);
response.addCookie(cookie2);
//页面跳转到客户端(转发、重定向)
response.sendRedirect("result.jsp");
%>
result.jsp
<%
//客户端
Cookie[] cookies=request.getCookie();
for(Cookie cookies : cookies){
out.print(cookie.getName()+"--"+cookie.getValue());
}
%>
通过F12可以发现 除了自己设置的Cookie对象外,还有一个name JSESSIONID的cookie
JSESSIONID的产生:
客户端向服务端第一次请求时就会在服务端先产生一个session,这个session对象自带一个sessionID,然后将sessionID复制一份给JSESSIONID,
然后将JSESSIONID放到的cookie里面,并且该cookie的key=JSESSIONID value=服务端sessionID的值,服务端在响应客户端的同时,将该cookie
发送到客户端,至此 客户端就有了一个cookie(JSESSIONID);因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID - session)
客户端第二/N次请求服务端时,服务端会先用客户端的cookie中的JSESSIONID 去服务端中的session中匹配sessionID,如果匹配成功(cookie JSESSIONID和session sessionID),说明此用户不是第一次访问
建议 cookie只保存 英文数字 ,否则需要进行 编码、解码 操作
使用Cookie实现 用户名 记住功能
login.jsp
<%
String uname;//全局变量
%>
<%
Cookie[] cookies=request.getCookie();
for(Cookie cookie: cookies){
if(cookie.getName().equals("uname")){
uname=cookie.getValue();
}
}
%>
<%
<form action="check.jsp" method ="post" value="<%=(uname==null?"":uname)%>"><br/>
用户名:<input type="text" name="uname"><br/>
密码:<input type="password" name="upwd"><br/>
<input type="submit" value="登录"><br/>
</form
%>
check.jsp
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("uname");
String pwd=request.getParameter("upwd");
//将用户名加入到cookie中,服务端 进行
Cookie name=new Cookie("name",name);//cookie只保存 英文数字 ,否则需要进行 编码、解码 操作
cookie.setMaxaAge(10);
response.addCookie(name);
response.sendRedirect("result.jsp");//从服务端传给客户端
%>
session(存在于服务端):会话
a.浏览网站:打开->关闭
b.购物: 浏览、付款、写邮件、退出
c.电子邮件:浏览、写邮件、退出
都是从开始到结束
session机制
客户端向服务端发出一个请求,服务端就创建一个session与其对应
pageContext
application
config
page
exception
javaweb学习Day2
最新推荐文章于 2024-05-03 12:17:52 发布