响应对象只适合将少量处理结果写入响应体,如果处理结果数量较多,使用响应对象会非常繁琐,增加开发难度。
比如说将“1+1=2”的结果“2”写入响应体内时,用响应对象非常方便:
int num = 1 + 1;
PrintWriter out = response.getWriter();
out.print(num);
但如果要将一个表格页面写入响应体中,使用响应对象就非常麻烦:
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("<table border=‘1‘ align=‘center‘ cellspacing=‘0‘ cellpadding=‘0‘>");
//标题行
out.print("<tr>");
out.print("<th>用户编号</th>");
out.print("<th>用户姓名</th>");
out.print("<th>用户密码</th>");
out.print("<th>用户邮箱</th>");
out.print("</tr>");
//数据行
out.print("<tr>");
out.print("<td>1</td>");
out.print("<td>张三</td>");
out.print("<td>123</td>");
out.print("<td>zhangsan@qq.com</td>");
out.print("<tr>");
//
out.print("<tr>");
out.print("<td>2</td>");
out.print("<td>李四</td>");
out.print("<td>123</td>");
out.print("<td>lisi@qq.com</td>");
out.print("<tr>");
//
out.print("<tr>");
out.print("<td>3</td>");
out.print("<td>王五</td>");
out.print("<td>123</td>");
out.print("<td>wangwu@qq.com</td>");
out.print("<tr>");
out.print("</table>");
为了降低开发难度,可以在处理结果数量较多时,用JSP文件代替响应文件将处理结果写入响应体。
在idea中,每当创建一个web项目,就会在web目录下默认建一个index.jsp文件。
也可以自己创建。
我们一般都把JSP文件放在web目录下。
在web目录上右键创建
然后为JSP文件命名。
创建好的JSP文件:
其中,第8行语句:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
JSP文件在执行时,会自动将文件中所有内容都写入到响应体,代替【out.print();】
我们可以在JSP文件里编写html标签命令
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<table border="1" cellspacing="0" cellpadding="0" align="center">
<tr>
<th>用户编号</th>
<th>用户姓名</th>
<th>用户密码</th>
<th>用户邮箱</th>
</tr>
<tr>
<td>1</td>
<td>张三</td>
<td>123</td>
<td>zhangsan@qq.com</td>
</tr>
<tr>
<td>2</td>
<td>李四</td>
<td>123</td>
<td>lisi@qq.com</td>
</tr>
<tr>
<td>3</td>
<td>王五</td>
<td>123</td>
<td>wangwu@qq.com</td>
</tr>
</table>
</html>
在Tomcat默认配置中,index.jsp被设为欢迎文件
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
发布网站,开启服务器:
1.作为资源文件类型不同
2.调用形式不同
如果直接在JSP文件里写java命令:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
int a = 10;
int b = 20;
int c = a + b;
开启服务器后浏览器显示:
执行标记的作用就是通知Http服务器将JSP文件中Java命令与其他普通执行结果进行区分。
<%
//java命令
%>
在JSP中声明java语句:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
//1.声明Java变量
int a = 10;
int b = 20;
//2.运算表达式:数学运算、关系运算、逻辑运算
int c = a + b;//数学运算
int d = a > b ? a : b;//关系运算
boolean e = a > 0 && a < 20;//逻辑运算
//3.书写控制语句
if (a > b) {
} else {
}
for(int i = 0;i < 10;i++) {
}
%>
输出标记的作用就是通知Tomcat,将输出标记中【变量的值】或输出标记中【表达式运算结果】写入到响应体。
<%=java的变量名%>
<%=java的表达式%>
在JSP中将java命令执行结果写入响应体
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
//声明变量
int a = 10;
int b = 20;
%>
<%--在JSP文件中,通过输出标记,通知JSP将Java变量的值写入响应体--%>
变量a的值:<%=a%>
<br>
变量b的值:<%=b%>
<br>
<%--在JSP文件中,通过输出标记,通知JSP将运算结果写入写入响应体--%>
a + b = <%=a+b%>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
Map map = new HashMap();
List list = new ArrayList();
%>
在JSP中编写一个判断语句,
html标签无法嵌入执行标签内的java语句中,但是在JSP中所有执行标记可当作一个整体。
可以将java判断语句分割成数段,然后将html标签嵌入其中。
如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
int age = 20;
%>
<%
if(age > 18) {
%>
<center><font style="color:green;font-size:20px">欢迎光临</font></center>
<%
} else {
%>
<center><font style="color:red;font-size:20px">拒绝入内</font></center>
<%
}
%>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.Set" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--制造数据--%>
<%
Map<Integer,String> map = new HashMap<>();
map.put(1,"张三");
map.put(2,"李四");
map.put(3,"王五");
map.put(4,"赵六");
%>
<%--输出数据--%>
<table border="1" cellpadding="0" cellspacing="0" align="center">
<tr>
<th>用户编号</th>
<th>用户名</th>
</tr>
<%
Set<Map.Entry<Integer,String>> users = map.entrySet();
for (Map.Entry<Integer,String> user:users) {
%>
<tr>
<td><%=user.getKey()%></td>
<td><%=user.getValue()%></td>
</tr>
<%
}
%>
</table>
原文:https://www.cnblogs.com/TSCCG/p/15173809.html