B站同名up猪,欢迎关注我的账号
每个实验都有2~3小题,代码都能在百度百科上找到,但都是VIP文档,而且有些小毛病,如中文乱码。
实验题目:①JSP语法②JSP内置对象③JSP与JavaBean④JSP中使用数据库
实验四需要Tomcat连接数据库,很多同学都没能连上,还有JSP传值乱码等问题。所以以下报告,我将倒着写,先写实验四,然后实验三、二、一,代码都很简单易懂。
实验四 JSP中使用数据库
不会的可以看这位博主写的
package bean.data;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class test {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/book", "root", "请输入你的密码");
String sql = "UPDATE bookform SET bookISBN = 3333 WHERE bookISBN = 987654";
Statement stmt = conn.createStatement();
int count = stmt.executeUpdate(sql);
System.out.println(count);
stmt.close();
conn.close();
}
}
点击“File”,选择“Project Structure”,再选择“Artifacts”,点图上的“加号”。
选择“Web Application:Exploded——》From Modules”,添加 untitled1 模块后,我这里(不知道叫什么,姑且叫做“文件们”)是默认在“Available Elements”下,需要把 untitled1 模块下的所有“文件们”全部双击一遍,才能移到<output root>路径下,也就成了WEB-INF下的文件。
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/book","root","***");
//在book后面添加?useUnicode=true&characterEncoding=UTF8
PK:primary key 主键
NN:not null 非空
UQ:unique 唯一索引
BIN:binary 二进制数据(比text更大)
UN:unsigned 无符号(非负数)
ZF:zero fill 填充0 ,例如字段内容是1 int(4), 则内容显示为0001
AI:auto increment 自增
1、掌握使用JDBC查询数据库中表的记录;
2、掌握使用JDBC更新数据库中表的记录。
首先建立数据库Book,在库中建立表bookForm,该表字段参照如下效果图中的7列。编写一个JSP页面inputMess.jsp,根据关键词查找并返回信息。
inputMess.jsp的效果如下图:
inputMess2.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.lang.*" %>
<%@ page import="java.lang.String.*" %>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
%>
<form action="">
输入查询内容:<input type="text" name="findContent" value=""/>
<select name="condition" size=1>
<option Selected value="bookISBN">ISBN</option>
<option value="bookName">书名</option>
<option value="bookAuthor">作者</option>
<option value="bookPublish">出版社</option>
<option value="bookTime">出版时间</option>
<option value="bookAbstract">内容摘要</option>
</select>
<br>
<input type="radio" name="findMethod" value="start"/>前方一致
<input type="radio" name="findMethod" value="end"/>后方一致
<input type="radio" name="findMethod" value="contains"/>包含
<br>
<input type="submit" value="提交"/>
</form>
<%
String findContent = request.getParameter("findContent");
if (findContent == null)
findContent = "";
String condition = request.getParameter("condition");
if (condition == null)
condition = "";
String findMethod = request.getParameter("findMethod");
if (findMethod == null)
findMethod = "";
if (findContent != null) {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF8";
String username = "root";
String password = "请填自己的密码";
Connection con = DriverManager.getConnection(url, username, password);
Statement sql = con.createStatement();
String s = "";
if (findMethod.equals("start")) {
s = "select * from bookform where " + condition + " like'" + findContent + "%'";
} else if (findMethod.equals("end")) {
s = "select * from bookform where " + condition + " like'%" + findContent + "'";
} else if (findMethod.equals("contains")) {
s = "select * from bookform where " + condition + " like'%" + findContent + "%'";
}
ResultSet rs = sql.executeQuery(s);
%>
<font size=4 align=center>查询到的图书</font>
<table border=1>
<tr>
<th>ISBN</th>
<th>图书名称</th>
<th>作者</th>
<th>价格</th>
<th>出版社</th>
<th>出版时间</th>
<th>摘要</th>
</tr>
<%
while(rs.next()){
%>
<tr>
<td><%=rs.getString(1) %></td>
<td><%=rs.getString(2) %></td>
<td><%=rs.getString(3) %></td>
<td><%=rs.getString(4) %></td>
<td><%=rs.getString(5) %></td>
<td><%=rs.getString(6) %></td>
<td><textarea><%=rs.getString(7) %></textarea></td>
</tr>
<%
}
}catch(Exception e){
out.print("没找到驱动");
}
}
%>
</body>
</html>
图1.1.1 输入数据
图1.1.2 点击“提交”后的界面
图1.1.3 对比数据库,验证输出信息正确
仍然使用实验题目一中的数据库和表。编写一个JSP页面updateRecord.jsp,更改数据库中某条信息。
updateRecord.jsp页面的效果如下图:
UpdateRecord.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.lang.*" %>
<%@ page import="java.lang.String.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
%>
<form method="post" action="" name="form1">
输入图书的ISBN号,然后更新该图书的有关信息:
<input type="text" name="bookISBN"/>
<input type="submit" value="提交">
</form>
<br>
<%
String bookISBN = request.getParameter("bookISBN");
String bookName = request.getParameter("bookName");
String bookAuthor = request.getParameter("bookAuthor");
String bookPrice = request.getParameter("bookPrice");
String bookPublish = request.getParameter("bookPublish");
String bookTime = request.getParameter("bookTime");
String bookAbstract = request.getParameter("bookAbstract");
if (bookISBN != null) {
String info = "输入(" + bookISBN + ")的图书信息";
out.println(info);
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (ClassNotFoundException e) {
out.print("没有找到驱动");
}
Connection con;
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF8","root","请输入你的密码");
Statement sql = con.createStatement();
String s = "";
s = "select * from bookform where bookISBN=" + bookISBN;
ResultSet rs = sql.executeQuery(s);
%>
<br>
<form method="post" name="form2" action="">
<table border=1>
<%while (rs.next()) { %>
<tr>
<th>图书名称:</th>
<%
String temp=rs.getString(2);
%>
<td><input type="text" value="<%=rs.getString(2)%>" name="bookName"></td>
</tr>
<tr>
<th>图书作者:</th>
<td><input type="text" value="<%=rs.getString(3)%>" name="bookAuthor"></td>
</tr>
<tr>
<th>图书价格:</th>
<td><input type="text" value="<%=rs.getString(4)%>" name="bookPrice"></td>
</tr>
<tr>
<th>出版社:</th>
<td><input type="text" value="<%=rs.getString(5)%>" name="bookPublish"></td>
</tr>
<tr>
<th>出版社时间:</th>
<td><input type="text" value="<%=rs.getString(6)%>" name="bookTime"></td>
</tr>
<tr>
<th>图书摘要:</th>
<td><textarea name="bookAbstract"><%=rs.getString(7)%></textarea></td>
</tr>
<tr>
<td><input type="hidden" name="bookISBN" value="<%=rs.getString(1)%>"></td>
<td><input type="submit" value="提交"></td>
</tr>
</table>
</form>
<%
}
%>
<%
if (bookName != null && bookAuthor != null && bookPrice != null && bookPublish != null && bookTime != null && bookAbstract != null) {
String update1;
Connection con1;
con1 = DriverManager.getConnection("jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF8", "root", "请输入你的密码");
update1 = "update bookform set bookName='" + bookName + "'," + "bookAuthor='" + bookAuthor + "'," + "bookPrice="
+ bookPrice + "," + "bookPublish='" + bookPublish + "'," + "bookTime='" + bookTime + "'," + "bookAbstract='" + bookAbstract +
"' where bookISBN=" + bookISBN;
Statement sql1 = con1.createStatement();
int r1 = sql1.executeUpdate(update1);
if (r1 >= 0) {
out.println("修改成功!");
response.setHeader("refresh", "4");
}
}
}
%>
</body>
</html>
图1.2.1 初始界面
图1.2.2 输入数据并提交后的界面
实验三 JSP与JavaBean
1、掌握使用有效范围是request的bean存储信息;
2、掌握使用有效范围是session的bean显示计算机的基本信息;
3、掌握使用有效范围是application的bean制作一个简单的留言板。
编写一个JSP页面inputAndShow.jsp和一个名字为computer的Javabean,其中computer由PC.class类负责创建。
1)inputAndShow.jsp页面提供一个表单。其中表单允许用户输入计算机的品牌、型号和生产日期,该表单将用户输入的信息提交给当前页面,当前页面调用名字为computer的bean,并使用表单提交的数据设置computer的有关属性的值,然后显示computer的各个属性的值。
2)各个属性的值。
InputAndShow.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<jsp:useBean id="computer" class="bean.data.PC" scope="request" />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
%>
<html>
<body bgcolor="yellow">
<form action="" method="post">
电脑品牌:<input type="text" name="pinpai"> <br>
电脑型号:<input type="text" name="xinghao"> <br>
生产日期:<input type="text" name="riqi">
<input type="submit" value="提交">
</form>
<jsp:setProperty name="computer" property="*" />
<table border="1">
<tr>
<th>电脑品牌</th>
<th>电脑型号</th>
<th>生产日期</th>
</tr>
<tr>
<th><jsp:getProperty name="computer" property="pinpai" /></th>
<th><jsp:getProperty name="computer" property="xinghao" /></th>
<th><jsp:getProperty name="computer" property="riqi" /></th>
</tr>
</table>
</body>
</html>
PC.java
package bean.data;
public class PC {
String pinpai, xinghao, riqi;
public PC() {
}
public String getPinpai() {
return pinpai;
}
public void setPinpai(String pinpai) {
this.pinpai = pinpai;
}
public String getXinghao() {
return xinghao;
}
public void setXinghao(String xinghao) {
this.xinghao = xinghao;
}
public String getRiqi() {
return riqi;
}
public void setRiqi(String time) {
this.riqi = time;
}
}
实验2要求与实验1类似,与实验1不同的是,要求编写两个JSP页面input.jsp和show.jsp。编写一个名字为computer的Javabean,其中computer由PC.class类负责创建。
1)input.jsp页面提供一个表单。其中表单允许用户输入计算机的品牌、型号和生产日期,该表单将用户输入的信息提交给当前页面,当前页面调用名字为computer的bean,并使用表单提交的数据设置computer的有关属性的值。要求在input.jsp提供一个超链接,以便用户单击这个超链接访问show.jsp页面。
2)show.jsp调用名字为computer的bean,并显示该bean的各个属性的值。
input.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="computer" class="bean.data.PC" scope="session" />
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
%>
<html>
<body bgcolor="#adff2f">
<font size="2">
<form action="" method="post">
电脑品牌:<input type="text" name="pinpai"><br>
电脑型号:<input type="text" name="xinghao"><br>
生产日期:<input type="text" name="riqi">
<input type="submit" value="提交">
</form>
<jsp:setProperty name="computer" property="*" />
<A href="show.jsp">访问show.jsp,查看有关信息。</A>
</font>
</body>
</html>
show.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="computer" class="bean.data.PC" scope="session" />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
%>
<html>
<body bgcolor="#7fffd4">
<table border="1">
<tr>
<th>电脑品牌</th>
<th>电脑型号</th>
<th>生产日期</th>
</tr>
<tr>
<th><jsp:getProperty name="computer" property="pinpai" /></th>
<th><jsp:getProperty name="computer" property="xinghao" /></th>
<th><jsp:getProperty name="computer" property="riqi" /></th>
</tr>
</table>
</body>
</html>
要求编写两个JSP页面inputMess.jsp和show.jsp。编写一个名字为board的Javabean,其中board由MessBoard.class类负责创建。
1)inputMess.jsp页面提供一个表单。其中表单允许用户输入留言者的姓名、留言标题和留言内容,该表单将用户输入的信息提交给当前页面,当前页面调用名字为board的bean,并使用表单提交的数据设置board的有关属性的值。要求在inputMess.jsp提供一个超链接,以便用户单击这个超链接访问show.jsp页面。
2)show.jsp调用名字为board的bean,并显示该bean的allMessage属性的值。
inputMess.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="board" class="bean.data.MessBoard" scope="application"/>
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<body>
<form action="" method="post" name="form">
输入你的名字:<br><input type="text" name="name"><br>
输入你的留言标题:<br><input type="text" name="title"><br>
输入你的留言:<br><textarea name="content" rows="10" cols="36" wrap="soft"></textarea><br>
<input type="submit" value="提交信息" name="submit">
</form>
<jsp:setProperty name="board" property="*"/>
<a href="showMess.jsp">查看留言板</a>
</body>
</html>
showMess.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="board" class="bean.data.MessBoard" scope="application"/>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<body bgcolor="#6495ed">
<jsp:getProperty name="board" property="allMessage"/>
<a href="inputMess.jsp">我要留言</a>
</body>
</html>
MessBoard.java
package bean.data;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
public class MessBoard {
String name,title,content;
StringBuffer allMessage;
ArrayList<String> savedName,savedTitle,savedContent,savedTime;
private String t;
public MessBoard() {
savedName = new ArrayList<String>();
savedTitle = new ArrayList<String>();
savedContent = new ArrayList<String>();
savedTime = new ArrayList<String>();
}
public void setName(String s) {
this.name = s;
savedName.add(name);
Date time = new Date();
SimpleDateFormat matter = new SimpleDateFormat("yyyy-mm-dd,HH:mm:ss");
String messTime = matter.format(time);
savedTime.add(messTime);
}
public void setTitle(String t) {
this.title = t;
savedTitle.add(title);
}
public void setContent(String c) {
/*try {
byte b[] = c.getBytes("ISO-8859-1");
c = new String(b);
} catch (Exception e) {}*/
this.content = c;
savedContent.add(content);
}
public StringBuffer getAllMessage() {
allMessage = new StringBuffer();
allMessage.append("<table border=1>");
allMessage.append("<tr>");
allMessage.append("<th>留言者姓名</th>");
allMessage.append("<th>留言标题</th>");
allMessage.append("<th>留言内容</th>");
allMessage.append("<th>留言时间</th>");
allMessage.append("</tr>");
for (int k = 0; k < savedName.size(); k++) {
allMessage.append("<tr>");
allMessage.append("<td>");
allMessage.append(savedName.get(k));
allMessage.append("</td>");
allMessage.append("<td>");
allMessage.append(savedTitle.get(k));
allMessage.append("</td>");
allMessage.append("<td>");
allMessage.append("<textarea>");
allMessage.append(savedContent.get(k));
allMessage.append("</textarea>");
allMessage.append("</td>");
allMessage.append("<td>");
allMessage.append(savedTime.get(k));
allMessage.append("</td>");
allMessage.append("</tr>");
}
allMessage.append("</table>");
return allMessage;
}
}
图2.3.1 输入数据
图2.3.2 点击“提交信息”后重定向
图2.3.3 点击“查看留言板”后跳转
实验二 JSP内置对象
1、通过本次实验使学生掌握JSP内置对象的基本语法,能够应用request、response、out等JSP内置对象的语法进行动态网站编程。
编写一个用户JSP注册页面,其中包含姓名(text)、密码(password)、年龄(select)、性别(radio)、爱好(checkbox)、自我介绍(textarea)、确认(submit)、重置(reset)表单标签,并请求到另一个JSP页面,在这个页面中接收信息,并将用户填写过的信息显示出来。
register.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="information.jsp" method="post">
姓名:<input type="text" name="username"><br>
密码:<input type="password" name="pwd"><br>
年龄:<select size="1" name="age">
<%for (int i = 1; i <= 100; ++i) {%>
<option value="<%=i%>"><%=i%>
</option>
<%} %>
</select><br>〉
性别:<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女<br>
自我介绍:<textarea rows="8" cols="30" name="introduction">
</textarea><br>
<input type="submit" value="提交">
<input type="reset" value="reset">
</form>
</body>
</html>
information.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="utf-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String strUsername = request.getParameter("username");
String strpwd = request.getParameter("pwd");
String strage = request.getParameter("age");
String strsex = request.getParameter("sex");
String strIntroduction = request.getParameter("introduction");
%>
用户名是:<%=strUsername%><br>
密码是:<%=strpwd%><br>
你的年龄是:<%=strage%><br>
你的性别是:<%=strsex%><br>
你的简介:<%=strIntroduction%><br>
</body>
</html>
图2.1.1 输入信息
图2.1.2 按下“reset”键后
图2.1.3 按下“提交”键后
使用response对象控制页面3秒钟刷新一次。(使用java.util.Date函数显示时间)。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>现在的时间是:<br>
<%
out.println(""+new Date());
response.setHeader("Refresh", "3");
%>
</body>
</html>
图2.2.1 每3秒刷新一次
使用response对象的重定向功能实现页面跳转。在实验题目1中如果表单的姓名在没有填写或为空的情况下提交时,将页面重新定向到注册页面。
register.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="information.jsp" method="post">
姓名:<input type="text" name="username"><br>
密码:<input type="password" name="pwd"><br>
年龄:<select size="1" name="age">
<%for (int i = 1; i <= 100; ++i) {%>
<option value="<%=i%>"><%=i%>
</option>
<%} %>
</select><br>〉
性别:<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女<br>
自我介绍:<textarea rows="8" cols="30" name="introduction">
</textarea><br>
<input type="submit" value="提交">
<input type="reset" value="reset">
</form>
</body>
</html>
information.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="utf-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String strUsername = request.getParameter("username");
if (strUsername == "") response.sendRedirect("register.jsp");
String strpwd = request.getParameter("pwd");
String strage = request.getParameter("age");
String strsex = request.getParameter("sex");
String strIntroduction = request.getParameter("introduction");
%>
用户名是:<%=strUsername%><br>
密码是:<%=strpwd%><br>
你的年龄是:<%=strage%><br>
你的性别是:<%=strsex%><br>
你的简介:<%=strIntroduction%><br>
</body>
</html>
图2.3.1 没填写姓名的情况下“提交”
图2.3.2 重定向到注册页面
实验一 JSP语法
1、掌握如何使用Tomcat的基础知识,为以后实验打下基础。
2、掌握怎样JSP页面中使用成员变量,怎样Java程序片,Java表达式;
3、掌握怎样在JSP页面中使用include标记动态加载文件,使用forward实现页面转向。
本实验将用户输入的单词按字典顺序排序。需要编写两个JSP页面,名字分别为inputWord.jsp和showDictionary.jsp。
1)inputWord.jsp的具体要求
该页面有一个表单,用户通过该表单输入若干个单词,并提交给showDictionary.jsp页面。
2)showDictionary.jsp的具体要求
该页面负责排序单词,并将排序的全部单词显示给客户。
(1)该JSP页面有名字为dictionary,类型是TreeSet成员变量。
(2)该JSP页面有public void addWord(String s)方法,该方法将参数s指定字符串添加到成员变量dictionary中。
该JSP页面在程序片中操作dictionary,即显示全部的单词。
importWord.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>inputWord</title>
</head>
<body bgcolor=cyan>
<form action="showDictionary.jsp" method=get name=form> 请输入单词(用空格分隔):
<input type="text" name="word"> <br>
<input type="submit" value="发送" name=submit>
</form>
</body>
</html>
showWord.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>showDictionary</title>
</head>
<body bgcolor="yellow">
<%!
TreeSet<String> dictionary = new TreeSet<String>();
public void addWord(String s) {
String word[] = s.split(" ");
for (int i = 0; i < word.length; i++) {
dictionary.add(word[i]);
}
}
%>
<%
String str = request.getParameter("word");
addWord(str);
Iterator<String> te = dictionary.iterator();
while (te.hasNext()) {
String word = te.next();
out.print(" " + word);
}
%>
</body>
</html>
编写3个JSP页面:giveFileName.jsp、readFile.jsp和error.jsp。
1)giveFileName.jsp的具体要求
要求giveFileName.jsp页面使用include动作标记动态加载readFile.jsp页面,并将一个文件的名字比如ok.txt传递给被加载的readFile.jsp页面。
2)readFile.jsp的具体要求
要求readFile.jsp负责根据giveFileName.jsp页面传递过来的文件名字进行文件的读取操作,如果该文件不存在就使用forward动作标记将用户转向error.jsp页面。
3)error.jsp的具体要求
负责显示错误信息。
giveFileName.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
读取名字是ok.txt的文件:
<jsp:include page="readFile.jsp">
<jsp:param value="D:/ok.txt" name="file"/>
</jsp:include>
</body>
</html>
readFile.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="java.io.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>
<font size=2 color=blue>
This is readFile.jsp.
</font>
<font size=4>
<%
String s = request.getParameter("file");
File f = new File(s);
if (f.exists()) {
out.println("<br>文件" + s + "的内容:");
FileReader in = new FileReader(f);
BufferedReader Bin = new BufferedReader(in);
String line;
while ((line = Bin.readLine()) != null) {
out.println("<br>" + line);
}
} else {%>
<jsp:forward page="error.jsp">
<jsp:param name="mess" value="File Not Found"/>
</jsp:forward>
<%
}
%>
</font>
</body>
</html>
error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor=yellow>
<p>
<font size=5 color=red>
This is error.jsp.
</font>
<%
String s=request.getParameter("mess");
out.println("<br>本页面得到的信息:"+s);
%>
</body>
</html>