JSP简介
JSPJSP全称是Java Server Pages他和servlet技术一样 都是SUN公司定义的一种用于开发动态web资源的技术JSP实际上就是Servletjsp = html + javahtml:静态内容servlet:适合编写java逻辑代码 不适合编写界面显示部分jsp:适合编写输出动态内容 但不适合编写java逻辑JSP 原理(编译执行过程)访问jsp页...
·
JSP
JSP全称是Java Server Pages
他和servlet技术一样 都是SUN公司定义的一种用于开发动态web资源的技术
JSP实际上就是Servlet
jsp = html + java
html:静态内容
servlet:适合编写java逻辑代码 不适合编写界面显示部分
jsp:适合编写输出动态内容 但不适合编写java逻辑
JSP 原理(编译执行过程)
访问jsp页面时 jsp页面会被翻译成.java文件
然后.java会被编译成.class文件(字节码文件)
获取当前系统时间的JSP
<% %>中 正常写java代码 write等价于print
date.toLocaleString() 可根据本地时间把Date对象转换为字符串,并返回结果
代码:
<body>
<%
Date date = new Date();
out.write(date.toLocaleString());
%>
</body>
jsp的最佳写法
传值时 如果是非表单提交的数据 可以保存在域对象中
如果是表单提交过来的数据 直接使用请求转发就可以了
用纯jsp写出 登录 处理登录逻辑 登录成功(欢迎页) 页面
<body>
<%
// 显示数据 编译到service方法里面去了
String msg = (String)request.getAttribute("msg");
if(msg != null){
out.write(msg);
}
%>
<form action="/sh-web-jsp/dologin.jsp" method="post" >
账号:<input type="text" name="username" >
密码:<input type="text" name="password" >
<input type="submit" value="登录">
</form>
</body>
</head>
<body>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
if(username.equals("张飞") && password.equals("123")){
session.setAttribute("username", username);
response.sendRedirect(request.getContextPath() + "/success.jsp");
}else{
// 登录失败 返回登录页面
// 相对服务器内 不用添加工程名 例如请求转发
// 相对于服务器外(相对于网址的8080后面) 需要添加工程名 例如请求重定向
// 失败后,在页面中显示错误信息
// 使用请求转发 比较合适
request.setAttribute("msg", "输入有误");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
%>
</body>
</html>
</head>
<body>
<%
session = request.getSession();
String username = (String)session.getAttribute("suername");
out.write(username);
%>
</body>
</html>
jsp基础语法
1.html标签
2.小脚本<% java代码 %>
表达式<%= 2+3 %>
声明 <%! %> 表示在类中定义全局成员变量 和 静态代码块
JSP注释 <%-- 被注释的内容 --%> 特点:安全
网页注释 <!-- 网页注释 --> 特点:不安全
<body>
<%-- 这是jsp注释 --%>
<!-- 这是网页注释 -->
<%!
int num2 = 10;
%>
<%
int num1 = 10;
num1++;
num2++;
out.print(num1);
out.print(num2);
%>
</body>
</html>
jsp的三个指令
page
import 和 java代码中的import是一样的
<%@ page import="java.util.Date,java.util.List"%>
或者:
<%@ page import="java.util.Date"%>
<%@ page import="java.util.List"%>
可以合在一起写 也可以分开写
JSP会自动导入以下的包:
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
session的默认值是true
<!-- 默认是true 相当于一个开关 -->
<%@ page session="true" %>
errorPage: 如果页面中有错误,则跳转到指定的资源
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page errorPage="/error.jsp"%>
<!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>Insert title here</title>
</head>
<body>
<%
int num = 10/0;
%>
</body>
</html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
out.write("捕获异常信息");
%>
</body>
</html>
isErrorPage:是否创建throwable对象 默认是false
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page errorPage="error.jsp" %>
<!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>Insert title here</title>
</head>
<body>
<%
int a = 10/0;
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<!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>Insert title here</title>
</head>
<body>
<%
String msg = exception.getMessage();
out.write(msg);
%>
捕获异常信息
</body>
</html>
contextType 等同于 response.setContextType("text/html;charset=utf-8");
Include
静态包含:把其它资源包含到当前页面中。
<%@ include file="/4.jsp" %>
动态包含:
<jsp:include page="/4.jsp"></jsp:include>
两者的区别:翻译的时间段不同
静态:在翻译时就把两个文件合并
动态:不会合并文件,当代码执行到include时,才包含另一个文件的内容。
原则:能用静的就不用动的。
<!-- taglib标签 导入jstl核心库 prefix="c" 代表给jstl标签库中的标签 起一个别名 -->
jsp的6个动作
<jsp:include > 动态包含
<jsp:forward> 请求转发
<jsp:param> 设置请求参数
<jsp:useBean> 创建一个对象
<jsp:setProperty> 给指定的对象属性赋值
<jsp:getProperty> 取出指定对象的属性值
</head>
<body>
<%
// 创建一个User对象
User user = new User();
user.setName("wanglong");
user.setPwd("123");
out.print(user.getName());
%>
<jsp:useBean id="user1" class="com.lanou3g.User" />
<jsp:setProperty property="name" name="user1" value="123" />
<jsp:setProperty property="pwd" name="user1" value="456" />
<%=user1.getName() %>
<br/>
<jsp:getProperty property="name" name="user1"/>
</body>
</html>更多推荐



所有评论(0)