【JSP實驗報告】手把手教Web項目=jsp+tomcat+MySQL

如果對你有幫助的話,記得點贊、關注我哦!

每個實驗都有2~3小題,代碼都能在百度百科上找到,但都是VIP文檔,而且有些小毛病,如中文亂碼。

實驗題目:①JSP語法②JSP內置對象③JSP與JavaBean④JSP中使用數據庫

實驗四需要Tomcat連接數據庫,很多同學都沒能連上,還有JSP傳值亂碼等問題。所以以下報告,我將倒着寫,先寫實驗四,然後實驗三、二、一,代碼都很簡單易懂。

項目目錄總覽

實驗四 JSP中使用數據庫

步驟一:向External Libraries導入JDBC

不會的可以看這位博主寫的  https://blog.csdn.net/SSY_1992/article/details/88344709

步驟二:用Java控制檯檢驗JDBC連接是否成功

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();
    }
}

運行結果(數據庫內容會被修改,在此不展示)

 

步驟三:讓Tomcat連上數據庫!

        點擊“File”,選擇“Project Structure”,再選擇“Artifacts”,點圖上的“加號”。

        選擇“Web Application:Exploded——》From Modules”,添加 untitled1 模塊後,我這裏(不知道叫什麼,姑且叫做“文件們”)是默認在“Available Elements”下,需要把 untitled1 模塊下的所有“文件們”全部雙擊一遍,才能移到<output root>路徑下,也就成了WEB-INF下的文件。

JSP向數據庫中存入中文數據爲問號の解決方法

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/book","root","***");
//在book後面添加?useUnicode=true&characterEncoding=UTF8

這位博主介紹了三種方法,我只用了第一種,便解決了問題。

解決之前

解決之後

MySQL Workbench(請自行添加表,在此不贅述)

        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更新數據庫中表的記錄。

二、實驗內容

1、數據庫查詢操作

       首先建立數據庫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 對比數據庫,驗證輸出信息正確

2、數據庫更新操作

       仍然使用實驗題目一中的數據庫和表。編寫一個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製作一個簡單的留言板。

二、實驗內容

1、有效範圍爲request的bean

       編寫一個JSP頁面inputAndShow.jsp和一個名字爲computer的Javabean,其中computer由PC.class類負責創建。

       1)inputAndShow.jsp頁面提供一個表單。其中表單允許用戶輸入計算機的品牌、型號和生產日期,該表單將用戶輸入的信息提交給當前頁面,當前頁面調用名字爲computer的bean,並使用表單提交的數據設置computer的有關屬性的值,然後顯示computer的各個屬性的值。

       2)各個屬性的值。

       3)編寫的PC.java應當有描述計算機品牌、型號和生產日期的屬性,並提供相應的getXxx和setXxx方法,來獲取和修改這些屬性的值。PC.java中使用package語句,包名爲:bean.data。將PC.java編譯後的字節碼文件PC.class保存到對應工程的WEB-INF\classes\bean\data目錄中。

源代碼

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、有效範圍爲session的bean

       實驗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的各個屬性的值。

       3)編寫的PC.java應當有描述計算機品牌、型號和生產日期的屬性,並提供相應的getXxx和setXxx方法,來獲取和修改這些屬性的值。PC.java中使用package語句,包名爲:bean.data。將PC.java編譯後的字節碼文件PC.class保存到對應工程的WEB-INF\classes\bean\data目錄中。

 源代碼

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>

運行結果

3、有效範圍爲application的bean

       要求編寫兩個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屬性的值。

       3)編寫的MessBoard.java應當有刻畫留言者的姓名、留言標題和留言內容的屬性,並且有刻畫全部留言信息的屬性allMessage。將MessBoard.java編譯後的字節碼文件MessBoard.class保存到對應工程的WEB-INF\classes\tom\jiafei目錄中。

 源代碼

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內置對象的語法進行動態網站編程。

二、實驗內容

1、註冊頁面

       編寫一個用戶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 按下“提交”鍵後

2、頁面刷新

        使用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秒刷新一次

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實現頁面轉向。

二、實驗內容

1、JSP頁面的基本結構

      本實驗將用戶輸入的單詞按字典順序排序。需要編寫兩個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>

運行結果

2、JSP動作標記

       編寫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>

運行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章