/*
*jsp的作用
* Servlet
* 缺点 不适合设置html响应体 需要大量的response.getWriter().print("html");
* 优点 动态资源 可以变成
* html
* 缺点 html是静态页面 不能包含动态信息
* 优点 不用为输出html标签而发愁
* jsp(java server pages)
* 优点 在原有html的基础上添加java脚本 构成jsp页面
*jsp和Servlet的分工
* jsp
* 作为请求发起页面 例如显示表单 超链接
* 作为请求结束页面 例如显示数据
* Servlet
* 作为请求中处理数据的环节
*jsp的组成
* jsp=html+java脚本+jsp标签(指令)
* jsp中无需创建即可使用的对象一共有8个 被称之为9大内置对象 例如 request对象 out对象
* 3中java脚本
* <%.. .%> java代码片段(常用) 用于定义0-N条java语句 方法内能写什么 它就可以放什么(不能用来定义变量)
* <%=...%> java表达式 用于输出(常用) 用于输出一条表达式(或变量) 的结果 response.getWriter().print(...); 这里能放什么 就可以放什么
* <%!...%> 声明 用来创建类的成员变量 和成员方法(基本不用 但是会被考 类体中可以放什么 它就能放什么)
Class MyClass{
成员
方法
构造器
构造代码块
静态块
}
*JSP原理
* jsp其实是一种特殊的Servlet
* 当jsp页面第一次被访问时 服务器会把jsp编译成java文件(这个java其实是一个servlet类)
* 然后把java编译成.class
* 然后创建该类对象
* 最后调用它的service()方法
* 第二次请求同一jsp时 直接调用service()方法
*在tomcat的work目录下可以找到jsp对应的.java源代码
*查看jsp对应java文件
* java脚本
* html
*jsp注释
* <%--...--%>当服务器把jsp编译成java文件时 已经忽略了注释部分 用户不能通过查看源代码看见
* <!-- fff --> html注释 可以看见
* <!--<%..%>--!> 可以看到<%%>中的内容
*真身
* 1、html数据都会在out.write()中出现 而且是在双引号内 即当前字符串输出给客户端
* 2、<%...%> 中的数据会原封不动的输入到"真身"中 一定是一条合法的java语句
* 3、<%=...%> 中的数据会放到out.println()中 但没有双引号 那么就不是输出字符串了 而是输出变量
* out.write() 和out.println()是相同的功能
*/
<table border="1" align="center" width="60%">
<tr>
<td>姓名</td>
<td>年龄</td>
</tr>
<%//循环输出 只学不用(过时)
for(int i=0; i<10;i++){
%>
<tr>
<td>张三</td>
<td>11</td>
</tr>
<%
}
%>
</table>
form.jsp 表单
<form action="/day05_01/AServlet" method="post">
整数<input type="text" name="num1"></input><br/>
整数2<input type="text" name="num2"></input><br/>
<input type="submit" value="提交"></input>
</form>
AServlet.java 中转站 处理请求
//获取参数
String s1 = request.getParameter("num1");
String s2 = request.getParameter("num2");
//转换成 int类型
int num1 = Integer.parseInt(s1);
int num2 = Integer.parseInt(s2);
//运算
int sum = num1+num2;
//把结果保存到request域中
request.setAttribute("result", sum);
//转换到到result.jsp
request.getRequestDispatcher("/jsps/result.jsp").forward(request, response);
result.jsp
<%
Integer result = (Integer)request.getAttribute("result");
%>
<%= result %>
这里写代码片
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();//获取项目名
/*
http://localhost:8080/day05_01/
*/
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- 向页面输出basePath -->
<base href="<%=basePath%>"></base>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
</head>
<body>
<%
int a = 10;
%>
<br/>
<%
out.print(a++);
%>
<%! int a =100;
public void fun1(){
System.out.println(a);
}
%>
<%
out.print(this.a++);
fun1();
%>
<%=a %>
</body>
</html>