jspNote

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指令

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动作元素

动作标签

myEclipse使用技巧

alt+/ 自动提示

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

tomcat用户名和密码配置

conf/tomcat-users.xml

tomcat处理静态Html的能力不如apache

集成方式:apache处理html;tomcat处理jsp和servlet

tomcat在线管理

时间: 2024-10-20 15:35:27

jspNote的相关文章