jsp - 1.3 总结

一、tomcat解压后目录

bin:     可执行文件(startup.bat 、shutdown.bat)
conf:     配置文件(server.xml)
lib:     tomcat依赖的jar文件
logs:     日志文件
temp:     临时文件
webapps:  可执行的项目
work:     由jsp翻译成的java,编辑成的class文件(jsp ->java ->class)
在这里插入图片描述

二、常见状态码:

200:   正常
300/301:  页面重定向 (跳转)
404:    资源不存在
403:   权限不足
500:   服务器内部错误(代码有误,页面会提示错误之处)

三、JSP的页面元素:

指令、HTML java代码(脚本Scriptlet)、注释
在这里插入图片描述

(1)page指令:<%@ page …%>

Language:   jsp页面使用的脚本语言
contentType:   浏览器解析jsp的编码
pageEncoding:  jsp文件自身编码,jsp ->java
import:      导入类

(2)脚本Scriptlet
    <% 局部变量、java语句 %>
	<%! 全局变量、定义方法 %>
	<%=输出表达式 %>

需要重启tomcat服务:修改web.xml、配置文件、java 代码
不需要重启:修改 Jsp\html\css\js 代码

注意:回车:<br/>
(3)注释

jsp注释<%-- --%>

四、JSP9大内置对象:

pageContext    JSP页面容器.
request       请求对象
response      响应对象
session       会话对象
appliation      全局对象
config       配置对象(服务器配置信息)
out         输出对象
page        当前JSP页面对象(相当于java中的this)
exception      异常对象

1.request对象的常见方法:

String getParameter(String name) : 根据key,得value
String[] getParameterValues(String name): 根据请key ,返回多个字段值value                   (checkbox)
void setCharacterEncoding(“编码格式utf-8”) : 设置post方式的请求编码
getRequestDispatcher(“xxx.jsp”).forward(request,response) ;  请求转发
ServletContext getServerContext(): 获取项目的ServletContext对象

(1)get与post请求方式

get提交方式:
       method=“get”
       地址栏请求
       超链接,a标签<a href="xx">

get与post请求方式的区别:
  a. 是否 在地址栏 显示
    get方式 请求信息 会显示 (地址栏容量有限,数据过大可能会出错)
    post不显示
  b. 文件上传操作:post

(2)统一请求的编码(解决乱码)

get:
在server.xml中 ,URIEncoding=“UTF-8”

post:
request.setCharacterEncoding(“utf-8”) ;

或者在 tomcat\apache-tomcat-8.5.50\conf\logging.properties文件中加一句话:
java.util.logging.ConsoleHandler.encoding = GBK

若为新建jsp文件想修改为 UTF-8 格式,例如
在这里插入图片描述
解决方法: window->Preferences->Web->JSP Files,如下页面
在这里插入图片描述
在此页面Encoding选中ISO 10646,应用即可

2.response 提供的方法:

void addCookie( Cookie cookie );  服务端向客户端增加cookie对象
void sendRedirect(String location ) throws IOException;  页面跳转(重定向)
void setContetType(String type): 设置服务端响应的编码(设置服务端的contentType类型)

(1)请求转发与重定向比较

|           请求转发         重定向
地址栏是否改变    不变(现地址栏)     改变(跳转的地址)

是否保留第一次      保留           不保留
请求时的数据

请求的次数        1              2

跳转发生的位置     服务端      客户端发出的第二次跳转

请求转发:
客户端 -> 服务端 A -> 服务端 B

重定向:
客户端 ->服务端A->告诉客户端去找B
客户端->服务端B

3.session
(1)session方法:

String getId():   获取sessionId
boolean isNew() : 判断是否为第一次访问
void invalidate() : 使session失效 ,全部删除

void setAttribute();  设置属性
Object getAttribute() ; 获取属性值

void setMaxInactiveInterval() :设置最大有效非活动时间,单位秒
int getMax InactiveInterval () :获取最大有效非活动时间

(2)Cookie方法:

javax.servlet.http.Cookie
public Cookie(String name,String value)
String getName()
String getValue()
void setMaxAge(int expiry);最大有效期(秒)

(3)

cookie存储在客户端(产生于服务端)
session存储在服务端

(4)实现机制

客户端第一次请求: 服务端产生一个sessionid(包含该客户信息),并赋值给cookie的jsessionid ,响应请求时将cookie发送给客户端。
cookie(JSESSIONID,sessionid的值)

多次登陆: 匹配服务端的sessionid和客户端的JSESSIONID,成功则直接登录。

服务端增加Cookie: response.addCookie(Cookie cookie)
页面跳转(请求转发,重定向)
客户端获取cookie:   request.getCookies();

注意:客户端一次获取全部cookie,且cookie保存中文名时需编码、解码,所以最好为英文/数字

五、四种范围对象

pageContext  JSP页面容器   当前页面有效 (其他地方看到page对象指的是此)
request     请求对象     同一次请求有效
session    会话对象      同一次会话有效
application   全局对象     全局有效(整个项目有效)

注意:从上到下为从小到大,尽量使用小的范围
.  若想多个项目共享、重启后仍然有效 JNDI 是好的选择

1.共有方法:

0bject getAttribute (String name) :     根据属性名,获得属性值
void setAttribute (String name, Object obj) : 设置属性值
eg: setAttribute(“a”,“b”) ;//若a不存在,则新建
            若存在,则将a的值改为b
void removeAttribute (String name):     根据属性名,删除对象

2.模拟示例

运行环境:eclipse.exe
     tomcat-8.5.50
(1)pageContext  当前页面有效(页面跳转后无效)
p1.jsp:

	<%	
		pageContext.setAttribute("a", "b") ;
		request.getRequestDispatcher("p2.jsp").forward(request, response) ;		
	%>
			

p2.jsp:

        <%=pageContext.getAttribute("a") %>

测试结果:
在这里插入图片描述
(2)request    同一次请求有效;其他请求无效(请求转发有效,重定向无效)

<%	
		request.setAttribute("a", "b") ;
		request.getRequestDispatcher("p2.jsp").forward(request, response) ;		
%>
    <%=request.getAttribute("a") %>

请求转发结果测试:
在这里插入图片描述
(3)session     同一次会话有效(无论怎么跳转都有效;关闭/切换浏览器
后无效;生命周期:登陆-退出)

<%	
		session.setAttribute("a", "b") ;
		//request.getRequestDispatcher("p2.jsp").forward(request, response) ;		
		response.sendRedirect("p2.jsp");
%>
      <%=session.getAttribute("a") %>

测试结果:
在这里插入图片描述
(4)application   全局有效;整个项目运行期间都有效(切换浏览器仍然有效);
关闭浏览器、其他项目内均无效
见scope/application.jsp + ap1.js

<%	
		application.setAttribute("a", "b") ;
		//request.getRequestDispatcher("p2.jsp").forward(request, response) ;		
		response.sendRedirect("p2.jsp");
%>
      <%=application.getAttribute("a") %>

测试结果:
在这里插入图片描述

六、补充的小细节

1.补全一句语句:Alt+/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值