JSP基础复习学习笔记

. 基本搭建

1.新建动态WEB项目(Dynamic Web Project)

2.WebContent目录下新建文件夹01 创建一个JSP文件 hello.jps

3.添加JSP程序段,可以添加java代码

jsp表达式:<%="hello world"%>

<%

String str="hello world";

%>

<%

out.println(str);

  %>

 

这里jsp报错javax.servlet

解决办法改路径 Build Path 添加jar libery 加入tomcat7 order and export 中勾选tomcat7保存错误解决

修改jsp模板默认编码集 这里进windows--preference 点击web--jspfile--将默认的编码改成UTF-8

 

jsp中声明代码 ,可以单独放一个jsp程序段中 可以在jsp页面的其他地方使用这些声明的定义

jsp表达式:<%="hello world"%> 这里可以直接在页面输出hello world

 

 

.项目导出和部署

1.工程项目名后右键 export 选择war 导出war文件到指定文件夹

2.将压缩好的war文件部署到tomcat 将文件复制到tomcat目录下的webapps文件夹下

3.这里将tomcat整个文件夹从WINDOWS发送到虚拟机的centos上测试前提是centos上已经安装配置好了java 然后在linux下进入tomcatbin目录下执行./startup.sh 终端返回结果tomcat started 表示部署成功

可以测试下这里在linux环境下打开浏览器输入localhost:8888/JSPStudy/01/hello.jsp 返回正确的页面表示部署成功如果是设置其他机器访问该机发现无法访问则要修改防火墙的配置防火墙设置中将8888端口添加并应用这时即可访问

如果需要关闭tomcat 则在bin路径下输入./shutdown.sh 此时关闭了该tomcat

 

 

 

 

 

 

 

 

.jsp注释

html注释

<!-- -->

这样的注释特点是完全暴露给客户端用户用户可以通过查看源代码看到注释的内容如果在这样的html注释中加入了敏感信息具有危险性 所以这里推荐使用jsp的注释功能在客户端查看源代码是看不到的

jsp注释

<%-- this is JSP comments--%>

jsp的程序段中 java的单行注释和多行注释都是可以正常使用的如下

<% // String str="abc" %>  单行注释

<% /* String str="abc" */ %> 多行注释

 

.JSP配置编译指令

1.page指令

<%@ page language="java"

contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"

import="java.util.ArrayList,java.util.LinkedList"

%>

language默认是java 也可以不指定

contentTpye属性 设置生成网页的编码

charset属性 编码这里默认的是ISO8859-1 一般改成UTF-8

pageEncoding属性 用于设置jsp本身的编码

import 属性 导入java如果没有导入jsp程序段中必须输入完全限定名要加上包名

<%@ page import="java.util.ArrayList" %>

<%@ page import="java.util.LinkedList" %>

 

errorPage属性 用来指定处理错误页面的路径

isErrorPage属性 设置当前页面是否为错误页面 设置为true

设置成功后如果某一个页面发生了异常则会跳转到该错误页面

如果不设置则会直接将报错信息输出在页面

 

2.JSP include编译指令

建一个include.jsp 再建两个footer.jsp header.txt文件 或者是header.html 添加如下指令则可以将其他几个页面或者文件的内容包含到include.jsp页面中输出

<%@ include file="header.txt" %>

<br/>

<%@ include file="footer.jsp" %>

 

这里需要注意的是如果包含的jsp中声明的变量不能和include文件中的变量重名不然会报错

 

3.JSP 动作指令

只在jsp转化成servlet的过程中起作用

3.1 forword指令

分为带参数和不带参数

重定向

<jsp:forward page="login.jsp"></jsp:forward> 直接跳转 不带参数

 

 

3.2 include动作指令

index.jsp中加入如下代码

<jsp:include page="header.html"></jsp:include>

<jsp:include page="body.jsp">

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

</jsp:include>

 

body.jsp代码 

 

<body bgcolor="<%=request.getParameter("bgcolor") %>">

 

</body>

 

这里将index.jsp页面的颜色改成了红色通过request.getParameter调用jsp:param中的参数

 

 

 

3.3 usebean指令

首先创建一个javabean实体类 这里创建了一个UserEntity.java

创建register.jsp body中的代码如下

<form action="do_register.jsp" method="post" >

用户名:<input type="text" name="userName" />

密码:<input type="password" name="password" />

<input type="submit" value="提交" />

</form>

 

 

 

创建do_register.jsp

 然后通过下面代码可以调用javabean来实现

<jsp:useBean id="user" class="com.test.entity.UserEntity"></jsp:useBean>

<jsp:setProperty property="userName" name="user" />

<jsp:setProperty property="password" name="user" />

 

 

<jsp:getProperty property="userName" name="user" />

<br/>

<jsp:getProperty property="password" name="user" />

 

 

这里等价于

<%

String userName=request.getParameter("userName");

String password=request.getParameter("password");

out.println(userName);

out.println("<br/>");

out.println(password);

%>

 

输出结果是一致的

.JSP内置对象

out对象 向浏览器输出各种数据

request对象 封装了来自浏览器客户端的各种信息 客户端向服务器发出的请求信息

response对象 封装了来自服务器的响应信息

exception对象 封装了JSP程序执行过程中的错误异常信息

config对象 封装了应用程序的配置信息

page对象 指向了当前jsp程序本身

session对象 用来保存会话信息 在同一用户的不同请求下共享数据

application对象 当前应用程序的上下文可以在不同的用户下共享信息

pageContext对象 对所有jsp页面和命名空间的访问

 

5.1 out对象

 

out.println("abc");//换行输出

out.newLine();//换行

out.print("ccc");//不换行

out对象除了一般的输出还负责对输出缓冲区进行管理

out.println("获取当前缓冲区大小:"+out.getBufferSize());

out.println("<br/>");

out.println("获取当前缓冲区剩余字节数目:"+out.getRemaining());

out.println("<br/>");

输出是8192 即默认为8kb

这里可以修改默认缓冲区大小

jsp中加入

<%@ page buffer="10kb" %> 这里将缓冲区大小改为了10kb

 

out.flash(); 强制刷新缓冲区里的数据

out.clearBuffer(); 清空缓冲区中的数据 在此代码前的所有输出的数据都会被清空不会输出出来

out.clean();清空缓冲区 

这里区别在 如果clean() 前用过flash方法则会抛异常而使用cleanBuffer方法不会出现这个异常

 

5.2 request对象

 

<form action="" method="post">

<input type="text" name="userName" />

<input type="submit" value="提交" />

</form>

请求方法名:<%= request.getMethod() %><br/>

请求的资源:<%= request.getRequestURI() %><br/>

请求使用的协议:<%= request.getProtocol() %><br/>

请求的服务器IP:<%=request.getServerName() %><br/>

请求的服务器端口:<%=request.getServerPort() %><br/>

客户端的IP地址:<%=request.getRemoteAddr() %><br/>

客户端的主机名:<%=request.getRemoteHost() %><br/>

表单提交来的值:<%=request.getParameter("userName") %>

 

页面显示所有的相关信息

 

处理数组形式的表单信息 

新建register.jsp

 

<body>

<form action="do_register.jsp" method="post" >

用户名:<input type="text" name="userName" />

技能

<input type="checkbox" name="skills" value="java" />java

<input type="checkbox" name="skills" value="python" />python

<input type="checkbox" name="skills" value="php" />php

<input type="checkbox" name="skills" value="linux" />linux

<input type="checkbox" name="skills" value="ruby" />ruby

<br/>

<input type="submit" value="提交" />

<input type="reset" value="重置" />

</form>

</body>

 新建do_register.jsp

 

<%

String userName=request.getParameter("userName");

String skills="";

String[] skillArr=request.getParameterValues("skills");

if(skillArr !=null && skillArr.length>0){

for(String skill:skillArr){

skills=skills+skill+" ";

}

}

request.setAttribute("userName", userName);

request.setAttribute("skills", skills);

%>

<jsp:forward page="welcome.jsp"></jsp:forward>

 

新建welcome.jsp

<body>

 信息展示界面<br/><br/>

 用户名:<%=request.getAttribute("userName") %> <br/>

 技能:<%=request.getAttribute("skills") %><br/>

</body>

 

这里在 do_register.jsp中通过 request.setAttribute方法 将遍历出的数组信息和用户名信息绑定 

welcome.jsp中通过request.getAttribute方法取得对应的数组信息展示

 

 

5.3 response对象

Cache-Control 用于设置网页缓存的策略 no-cache 数据内容不会被存储

<%

response.setHeader("Cache-Control", "no-cache");

response.setIntHeader("Refresh", 2);//网页每隔两秒钟刷新一次

out.println("date is "+ new java.util.Date().toString()+"<br/>");

%>

 

<%

response.sendRedirect("http://www.baidu.com");// 直接跳转到指定的网页

%>

 

<%

Cookie myCookie=new Cookie("admin","test123456");

myCookie.setMaxAge(3600);//设置cookie最大存活时间为3600s

response.addCookie(myCookie);

%>

 

 

5.4 session对象

 

tomcat conf文件夹下的 tomcat-users.xml中配置管理员用户

将工程打war包放入tomcat,并启动tomcat

tomcat-users 标签内 添加

<user username="admin" password="admin" roles="manager-gui" />

进入localhost:8080  页面 进入manager

输入设置好的账号密码登陆

这里可以测试观察session的情况

访问任意一个JSPStudy工程下的页面 刷新管理页面,session0变成了1 点击进去可以查看session信息

 

 

session的唯一标识符:<%= session.getId() %><br/>

session的创建时间:<%= new java.util.Date(session.getCreationTime()).toString() %><br/>

session的最后访问时间:<%= new java.util.Date(session.getLastAccessedTime()).toString() %><br/>

session的失效时间 :<%= session.getMaxInactiveInterval() %><br/>

 

 

WEB-INF下如果没有web.xml文件工程右键 选择javaee工具选择部署服务描述文件 即可

打开web.xml

加入 

  <session-config>

   <session-timeout>10</session-timeout>

  </session-config>

session的生效时间进行设置这里设置为10分钟

然后清理tomcat重启进入页面可以发现生效时间由默认的1800改为60010分钟

 

 

通过一个登陆示例来综合运用session

 

login.jsp 一个简单的登陆表单

<form action="do_login.jsp" method="post">

 userName:<input type="text" name="userName" />

 password:<input type="password" name="password" />

 <input type="submit" value="提交" />

 <input type="reset" value="重置" />

</form>

do_login.jsp 对提交的表单进行处理

<%

String userName=request.getParameter("userName");

String password=request.getParameter("password");

if(userName !=null && password !=null){

session.setAttribute("userName", userName);

response.setHeader("refresh", "2;URL=welcome.jsp");

}

%>

welcome.jsp 欢迎界面

 

<%

if(session.getAttribute("userName")!=null){%>

欢迎:<%=session.getAttribute("userName") %>

<a href="logout.jsp">注销</a>

<br/>

<%}else{%>

请先登录

<a href="login.jsp">登陆</a>

<% }

%>

<%if(session.isNew()){ %>

<br/>

欢迎新用户

<% }else{ %>

欢迎老用户

<% } %>

 

logout.jsp 退出界面

<%

session.invalidate();//直接清楚session对象

response.setHeader("refresh", "2;URL=welcome.jsp");

%>

 

5.5 application对象

application对象代表了当前的应用程序存在于服务器的内存空间中应用一旦启动就会生成一个application对象直到应用被关闭application才会被销毁相对于session对象

application的生命周期更长

 

<%=application.getServerInfo() %> 返回当前的服务器信息

 

 

创建一个计数器示例

<%

Object obj=application.getAttribute("counter");

if(obj == null){

application.setAttribute("counter", new Integer(1));

out.println("该页面被访问了1<br/>");

}else{

int counterValue=Integer.parseInt(obj.toString());

counterValue++;

out.println("该页面被访问了" + counterValue+"<br/>");

application.setAttribute("counter", counterValue);

}

%>

 

 

5.6 config对象很少使用

 web.xml中插入如下

  <servlet>

   <servlet-name>config</servlet-name>

   <jsp-file>/13/config.jsp</jsp-file>

   <init-param>

   <param-name>username</param-name>

   <param-value>admin</param-value>

   </init-param>

     <init-param>

   <param-name>password</param-name>

   <param-value>123456</param-value>

   </init-param>

  </servlet>

  <servlet-mapping>

   <servlet-name>config</servlet-name>

   <url-pattern>/13/*</url-pattern>

  </servlet-mapping>

 

新建config.jsp

body中加入如下

用户名:<%= config.getInitParameter("username") %><br/>

密码: <%=config.getInitParameter("password") %>

 

登录页面显示配置文件中的相应用户名密码

 

5.7 page对象

指向了当前jsp页面本身 它是java.lang.object的一个实例

都是继承自object对象 

<%

out.println("page对象的字符串:" +page.toString());

page.getClass(); //返回当前的object

page.hashCode(); //返回当前的page对象的hashcode

//page.equals(obj); //比较与指定的对象是否相等

%>

 

5.8 exception对象

建立throw_error.jsp 加入错误页面跳转

<%@ page errorPage="handle_errors.jsp" %>

 

body中插入一个异常

<%

int a=1/0;

%>

 

新建handle_errors.jsp

page指令中添加

isErrorPage="true"

 

body中插入

 

异常描述信息:<br/>

<%

out.println(exception.getMessage());

%>

<br/>

excepiton对象的字符串描述

<%

out.println(exception.toString());

%>

<br/>

<%

exception.printStackTrace();

%>

访问throw_error.jsp则跳转到handle_error.jsp页面并打印出错误信息

 

5.9 pageContext对象

可以访问其他所有的jsp内置对象

 

<%

// JspWriter myOut=pageContext.getOut();

// myOut.println("hello world");

pageContext.setAttribute("admin", "123456",pageContext.SESSION_SCOPE); //将一组键值对保存到session对象中

String value=session.getAttribute("admin").toString();

out.println(value);

out.println("<br/>");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值