看视频自学jsp以及知识整理

1.<!--脚本片段,就是在jsp中嵌入java代码-->
<%
Date date = new Date();
String time =date.toLocaleString();
%>


2.<%=time %> <!--脚本表达式 :他的作用就是用于向浏览器输出数据  和out.write(time)一样  -->


3.<!--代码片段中的代码要完整-->
<%
for (int i = 0; i < 5; i++) {
%>
<h1>www.Baidu.com</h1>
<%
}
%>

4.<%--jsp注释,不会打给浏览器--%>
   <!--html注释,会打给浏览器,查看源代码能看到,不能注释脚本代码-->


5.jsp指令

5.1 page 指令

   (1)<%--page指令,
其中session标签如果设为true会为我们在当前项目的servlet中创建session对象,
isThreadSafe为false让线程安全就是实现singleMode接口
errorPage 配置错误处理的界面,也能在xml中配置但前者优先级高
isErrorPage="true" 是否是错误处理页面,有什么好处?能得到异常处理对象 看当前项目下生成的servlet中是否有exception  九大隐式对象之一
contentType  页面类型
pageEncoding  页面编码
isELIgnored  是否忽略el表达式
--%>

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" session="false" isThreadSafe="false"%>

(2)<%--当page标签中的session标签设为false时,我们也可以手动去获取session,因为即使界面关闭了,服务器仍然会保留30分钟 --%>
<%
request.getSession();
%>

     (3)jsp乱码问题

<%--
要解决中文乱码问题
为什么会有中文乱码问题?1.我在硬盘中保存 中文是gb2312的格式,而服务器解析格式不一致导致乱码2.修改pageEncoding和charset
当pageEncoding设置过后,charset就不用配置了
--%>

5.2 include指令(静态包含,它包含的所有jsp会编译成一个servlet,性能好)   和android 界面引用一个想法

<%--静态包含和动态包含的区别:
1.静态包含 会把所有jsp合成一个servlet

2.动态包含会把所有的jsp区分开来生成对应的servlet

--%>
<%--用include指令引用header 和 footer--%>
<%@include file="/public/header.jsp"%>
aaaaaaaaaa<br/>
<%@include file="/public/footer.jsp"%>


5.3 taglib指令

<%@taglib uri="http://java.sun.com/jsp/jstl/core"   prefix="c"%>   对jstl包进行导包,uri在配置文件中直接找

prefix个命名名字

6.动态包含(在开发中尽量使用静态包含,不要使用动态包含,因为会耗性能)

<%
request.getRequestDispatcher("/public/header.jsp").include(request, response);
%>
<%--
aaaaaaaaaa<br/> 这样写出现在html中间,因为缓存
想让代码能在header和footer中间显示就得如下:
--%>

<%
response.getWriter().write("aaaaaaa<br/>");
%>
<%
request.getRequestDispatcher("/public/footer.jsp").include(request, response);
%>


7.out隐式对象(有缓冲,buffer,推荐使用)

<%--
jsp九大隐式对象(源代码中)
Request
Response
Session
Application
Config
Page
Exception
Out
pageContext
  --%>
  <%-- out对象有缓冲buffer,我们可以在page中关闭,在开发中我们推荐用隐式对象 --%>
  <%
  out.write("hahahh");  
  response.getWriter().write("wowowo");
  %>

8.pageContext隐式对象(封装了其他8大隐式对象)就是page域,最小


9.pageContext对象访问其他域

<%-- 
1.在request域中设置值
2.利用pageContext去获取request域中的值
3.out对象输出
4.pageContext.findAttribute()方法是说从最小的page域到最大的Servlet域中去
--%>
<%
request.setAttribute("data", "aaaa");
String data = (String)pageContext.getAttribute("data",PageContext.REQUEST_SCOPE);
out.write(data);
pageContext.findAttribute("data"); // page->requset->session->application
%>


<%--
el表达式
${data}   //实际上就是   pageContext.findAttribute("data"); // page->requset->session->application
  --%>


10.pageContext对象的常用方法

<%--
1.跳转到某个页面
2.引入某个页面
  --%>
<%
pageContext.forward("/1.jsp");
pageContext.include("/footer.jsp");
%>

11.jsp常用标签

<%--
1.跳转标签  <jsp:forward
2.引入标签  <jsp:include
3.传参标签 <jsp:param
--%>


<%--当web.xml中访问/14.jsp时 跳转到IndexServlet--%>
<jsp:forward page="/servlet/IndexServlet">

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

</jsp:forward>

<jsp:include page="/public/footer.jsp"></jsp:include>  <%--就相当于pageContext.include()方法--%>

12.对Person类,使用jsp:usebean标签

person类

public class Person {
	private String name;
	private int age;
	private Date birthday;
	

	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}

jsp:usebean标签

<!--userbean标签体只在userbean标签实例化的时候才执行-->
<jsp:useBean id="person" class="com.boom.domain.Person" scope="page">
aaa
</jsp:useBean>
<%=person.getName()%>

13..对Person类,使用jsp:setProperty标签

<jsp:useBean id="person1" class="com.boom.domain.Person" scope="page"></jsp:useBean>
<%--手动为bean属性赋值 --%>
<%--<jsp:setProperty name="person1" property="name"  value="xxxxx"/> --%>
<%=person1.getName()%>

<%--用请求参数给bean的属性赋值  http://localhost:8080/day09/2.jsp?name=xiaoming&age=21--%>
<jsp:setProperty name="person1" property="name" param="name"/>
<jsp:setProperty name="person1" property="age" param="age"/>
<jsp:setProperty name="person1" property="birthday" value="<%=new Date()%>"/>
<!--支持8种基本数据类型的转换(把客户提交的字符串,转成相应的8种基本数据类型,赋到bean中)  -->
<%=person1.getName() %><br/>
<%=person1.getAge() %><br/>
<%=person1.getBirthday() %><br/>

<br/>------------------<br/>
<%--用所有的请求参数为bean赋值 --%>
<jsp:setProperty name="person1" property="*" />
<%=person1.getName() %><br/>
<%=person1.getAge() %><br/>

<jsp:getProperty name="person1" property="name" />
<jsp:getProperty name="person1" property="age" />
<jsp:getProperty name="person1" property="birthday" />
<%--之后用el表达式,就不用在代码中进行判断,若无对象就会返回一个空字符串--%>


14.友好界面

14.1 对错误设置的界面

404.jsp

代码:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>404错误</title>
</head>
<body>
	对不起,出错了
</body>
</html>

500.jsp

代码:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>505</title>
</head>
<body>
对不起,资源未找到
</body>
</html>

14.2  对固定样式设置界面共用一些东西

header.js

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

这是页头<br/>

footer.jsp

<%@ page language="java" import="java.util.*"  pageEncoding="UTF-8"%>

这是页脚<br/>






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值