jspNote

本文详细介绍了JSP技术在动态网页开发中的应用,包括安装Tomcat服务器、配置环境变量、目录结构、默认欢迎页面配置、生命周期、内置对象等关键概念。同时,文章还覆盖了表单提交方式、request和response对象、session、application对象、JSP内置对象、JavaBean设计原则、动作元素等Web开发核心知识点。
摘要由CSDN通过智能技术生成

jsp个人笔记

静态网页 html/css
动态网页 jsp,asp,php

安装tomcat服务器
配置环境变量

#set tomcat
export TOMCAT_HOME=/home/juedaiyuer/apache-tomcat-9.0.0.M4

启动
startup.sh

测试是否启动成功
http://localhost:8080/

tomcat的目录结构

bin 命令文件
conf 配置文件
lib 所需的各种JAR文件
logs 日志文件
temp 临时文件
webapp 发布web应用时,默认会将Web应用的文件发布到此目录中
work 由jsp生成的servelet存放在此目录下

WEB-INF目录结构

是web应用的安全目录,客户端无法访问,只有服务端可以访问的目录
web.xml项目部署文件
默认欢迎页面:index.jsp

/**
    1.配置默认欢迎页面
    2.web.xml上面添加下面的代码  
*/
<welcome-file-list>
    <welcome-file>/yourfile.jsp</welcome-file>
</welcome-file-list>

classes文件夹,用以放置*.class文件
lib文件夹,用于存放需要的jar包

myEclipse

配置

配置JRE
preferences-java-Installed JRES 自行add,添加你想要的jdk安装目录即可

集成Tomcat服务器

preferences-myEclipse-servers-tomcat 设置你想要的tomcat目录即可

虚拟路径

修改tomcat服务器默认端口

/conf/server.xml

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

javaEE方向:电子银行,网上证券交易所,铁路,中国移动…

jsp页面组成部分

jsp指令
page指令,通常位于jsp页面的顶部,同一个页面可以有多个page指令
include指令,外部文件嵌入当前jsp页面的指令
taglib指令,使用标签库定义新的自定义标签,在jsp页面启动定制行为

<%@page
    属性1 = "属性值" 属性2 = "属性值"...      
%>

属性:
language ;
import 通过该属性来引用脚本语言中使用到的类文件
contentType 用来指定jsp页面所采用的编码方式,默认text/html,ISO-8859-1

jsp注释:
使用html注释 ,客户端可见

使用jsp注释,客户端不可见
<%–html注释–%>
jsp脚本注释
//单行注释
/**/多行注释

jsp脚本:
在jsp页面中执行的java代码

<% java 代码 %>

jsp声明:
在jsp页面中定义变量或者方法

<%! java 代码 %>

jsp表达式:

<% =表达式 %> 表达式不以分号结束

生命周期:
jsp页面生命周期:

  1. 用户发出请求index.jsp
  2. 是否是第一次请求
  3. 如果是第一次请求,jsp引擎把该jsp文件转换成为一个servlet,生成字节码文件,并执行jspInit()
  4. 生成字节码文件(如果不是第一次请求,直接访问该字节码文件)
  5. 解析执行,jspService()

Jsp内置对象

jsp内置对象是web容器创建的一组对象,不使用new关键字就可以使用的内置对象

例子

<%
int[] value = {60,70,80};
    for(int i:value){
        out.println(i);
    }
%>

out对象
jspWriter类的实例,向客户端输出内容

常用方法
println() 向客户端打印字符串
flush() 将缓存区内容输出到客户端
clear() 清除缓冲区的内容,在flush调用会抛出异常
clearBuffer() …不会抛出异常
getBufferSize() 返回缓冲区大小(字节数)
getRemaining() 缓存区剩余
isAutoFlush() 缓存区满,自动清空或者抛出异常
close() 关闭输出流

表单提交方式

get
以明文的方式通过URL提交数据,数据在URL中可以看到,提交的数据最多不超过2KB,安全性较低效率较高.适合提交数据量不大,安全性不高的数据.比如:搜索,查询功能
post
将用户提交的信息封装在HTML HEADER内.适合提交数据量大,安全性高的用户信息.比如:注册,修改,上传等功能

<form name="regForm.jsp" action="动作" method="get/post">

</form>

request对象

客户端请求信息封装在request对象中,通过它了解客户的需求,做出响应.
它是HttpServletRequest的实例
具有请求域,完成请求之前一直有效

request对象的方法:

getParameter(string name) 返回指定参数的参数值
getParameterValues(string name) 返回包含参数name的所有值数组,比如checkbox复选表单

//解决中文乱码问题,无法解决URL传递参数的中文乱码问题
<%
    request.setCharacterEncoding("UTF-8");
%>

//URL传递参数中文乱码,conf/server.xml

<Connector port="8080" protocol="HTTP/1.1"
       connectionTimeout="20000"
       redirectPort="8443" URIEncoding="utf-8"/>


setAttribute(string,obj)
getAttribute(string)

getContentType() 请求体的MIME类型
getProtocol() 返回请求的协议类型及版本号
getServerName() 返回接受请求的服务器主机名

getServerPort() 服务器端口号
getCharacterEncoding() 字符编码方式
setCharacterEncoding() 设定请求字符编码方式
getContentLength() 请求体长度
getRemoteAddr() 返回发送此请求体的客户端IP地址
getRealPath() 返回虚拟路径的真实地址
getContextPath() 上下文路径

reponse对象

reponse对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它
HttpServletResponse类的实例
具有页面作用域

reponse对象常用方法

PrintWriter getWriter() 向客户端输出字符的一个对象
sendRedirect(java.lang.String location) 重新定向客户端的请求


PrintWriter outer = reponse.getWriter(); //提前于内置out对象
outer.println("---string---");

请求转发与请求重定向

请求重定向:
客户端行为,本质上等于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变

请求转发:
服务器行为,是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变

request.getRequestDispatcher().forward(req,resp);

面试经常问到的问题,方向javaEE

session

客户端和服务器的一次会话
在服务器内存中保存着不同用户的session

jsp内置对象
在第一个JSP页面被装载时自动创建,完成会话期管理
当一个客户访问一个服务器时,可能在服务器的不同页面之间切换,需要session对象管理
session对象是httpsession类的实例

long getCreationTime() 
getId()
setAttribute(string name,Obj value) 属性保存,类似于key-value
getAttribute(string name)
String[] getValueNames() 所有可用属性的数组
getMaxInactiveInterval() 两次请求间隔多长时间session被取消,存活时间
setMaxInactiveInterval() 

程序demo:

<%
    SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd日 HH:mm:ss");//需要倒入java.text.*

    Date d = new Date(session.getCreateTime());
%>

Session创建时间: <%=sdf.format(d)%>

session的生命周期

创建

当客户端第一次访问某个jsp或者Servlet时候,服务器会为当前会话创建一个SessionId,每次客户端向服务器发送请求,都会将此id携带过去,服务器进行校验

活动

  1. 通过超链接打开的是同一会话
  2. 当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时,属于同一次会话

销毁

  1. 调用了session.invalidate()方法
  2. session过期
  3. 服务器重新启动

    //设置session存活时间,web.xml



    10

application对象

实现了用户间数据的共享,可存放全局变量
开始于服务器的启动,终止于服务器的关闭
在用户的前后连接或不同用户之间的连接中,可以对application对象的同一属性进行操作
是ServletContext类的实例

常用方法

setAttribute(string name,obj value) 属性 K-V
getAttribute(string name)

getAttributeNames() 返回所有可用属性名的枚举

getServletInfo() 返回JSP(servlet)引擎名及版本号

page对象

指向当前JSP页面本身,类似类中的this指针.
java.lang.Object类的实例

getClass() 
hashCode()
equals(Object obj)
copy(Object obj)
clone()
toString()
notify() 唤醒一个等待的线程
notifyAll() 唤醒所有等待的线程
wait(int taimeout) 线程等待,直到timeout结束或者唤醒
wati() 

pageContext对象

提供了对JSP页面内所有对象及名字空间的访问
可以访问到本页所在的sessio,也可以取本页面所在的application的某一属性值
页面中所有功能的集大成者
类名叫pageContext

常用方法

getOut() 当前客户端响应被使用的JspWriter流(out)
getSession() 
getPage()
getRequest() 
getResponse()
setAttribute()
getAttribute(String name,int scope) 在指定范围内取属性的值
getAttributeScope() 返回某属性的作用范围
forward(String relativeUrlPath) 重导到另一页面(相对路径)
include(String relativeUrlPath) 在当前页面包含另一页面

config对象
在一个servlet初始化时,jsp引擎向它传递信息用的.此信息包含Servlet初始化时所要用到的参数以及服务器相关信息.

常用方法

ServletContext getServletContext() 服务器相关信息
String getInitParameter(Sting name) 返回初始化参数的值
Enumeration getInitParameterNames() 返回Servlet初始化所需要参数的枚举

exception对象

是一个异常对象,当一个页面在运行过程中发生了异常,就产生这个对象.如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译.是java.lang.Throwable的对象.

常用方法

getMessage() 描述异常的信息
toString() 关于异常的简短描述消息
printSrackTrace() 显示异常及其栈轨迹
FillInStackTrace() 重写异常的执行栈轨迹

程序demo

<%@page
属性1 = "属性值" 属性2 = "属性值"...errorPage="yourfile.jsp"      
%>

//yourfile.jsp

TODO...

javabean

设计原则
1. 公有类
2. 无参的共有构造方法
3. 属性私有
4. getter和setter方法

创建getter和setter的快捷方法—MyEclipse

source-generator getters and setters 选项

使用普通方式创建javabean的实例

<%@ page import="包.类名" %>

new方法->get/set方式

使用jsp动作标签创建实例

<jsp:useBean id="标识符(实例化的对象名)" class="java类名" scope="作用范围" />

jsp:setProperty 给已经实例化的javabean对象的属性赋值

<jsp:setProperty name="id" property="*"/> 跟表单关联
<jsp:setProperty name="id" property="属性名"/>
<jsp:setProperty name="id" property="属性名" value="数值"/> 手工设置
<jsp:setProperty name="id" property="propertyName" param="request对象中的参数名"/> 跟request参数关联

jsp:getProperty

获取javabean对象的属性

作用域范围

page 当前页面有效
request 可以通过HttpRequest.getAttribute()方法取得Javabean对象
session HttpSession.getAttribute()
application application.getAttribute(),全局范围

各个变量的生存周期

Model1

状态管理

http协议的无状态性
保存用户状态的两大机制
1. Session
2. Cookie

Cookie
是web服务器保存在客户端的一系列文本信息

典型应用
1. 判定注册用户是否已经登陆网站
2. 购物车的处理
3. 系统自动记录已经浏览过的视频
4. 登陆是否记住登陆状态


JSP创建与使用Cookie

Cookie newCookie = new Cookie(String key,Object value);

response.addCookie(newCookie); //写入cookie对象

Cookie[] cookies = request.getCookies(); //读取Cookie对象

常用方法

setMaxAge(int expiry) 设置有效期,以秒为单位

setValue(String value) cookie赋值

getName() 获取cookie的名称

getValue() 获取cookie的值

getMaxAge() 获取cookie的有效时间

cookie 登陆示例

使用URLEncode解决无法在Cookie中保存中文字符串问题
URLDecoder函数

Session与Cookie对比

Session
1. 在服务器保存用户信息
2. 保存的是Object类型
3. 随会话的结束而将其存储的数据销毁
4. 保存重要的信息

cookie
1. 在客户端保存用户信息
2. cookie保存的是String类型
3. 可以长期保存在客户端
4. 保存不重要的用户信息

jsp动作元素

动作标签

指令与动作

指令

<%@ include file="URL" %> 
  1. 发生作用的时间:页面转换期间
  2. 包含内容:文件的实际内容
  3. 转换成Servlet,主页面和包含页面转换为一个Servlet
  4. 编译时间 较慢,资源必须被解析
  5. 执行时间 较快

动作

<jsp:include page="" />
  1. 发生动作时间:请求期间
  2. 包含内容:页面的输出
  3. 主页面和包含页面分别转换成独立的Servlet
  4. 编译时间 较快
  5. 执行时间 较慢,每次资源必须被解析

<jsp:forward page="" />

等同于request.getRequestDispatcher("/url").forward(request,response);


<jsp:param name="" value="" />

通常与forward动作一起使用,作为其子标签;传递参数,可以覆盖掉表单提交

myEclipse使用技巧

alt+/ 自动提示

按钮 deploy Myeclipse j2ee project to server 发布项目

tomcat用户名和密码配置

conf/tomcat-users.xml

tomcat处理静态Html的能力不如apache
集成方式:apache处理html;tomcat处理jsp和servlet

tomcat在线管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值