当前位置:   article > 正文

【JSP实验报告】手把手教Web项目=jsp+tomcat+MySQL_jsp 项目

jsp 项目

如果对你有帮助的话,记得点赞、关注我哦!

B站同名up猪,欢迎关注我的账号鸽子不二的个人空间-鸽子不二个人主页-哔哩哔哩视频哔哩哔哩鸽子不二的个人空间,提供鸽子不二分享的视频、音频、文章、动态、收藏等内容,关注鸽子不二账号,第一时间了解UP主动态。icon-default.png?t=N7T8https://space.bilibili.com/204913846

博客总领目录请看这篇,超级干货

软件工程专业大学四年学什么_大学近代史学分是多少-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_41587612/article/details/104362661

每个实验都有2~3小题,代码都能在百度百科上找到,但都是VIP文档,而且有些小毛病,如中文乱码。

实验题目:①JSP语法②JSP内置对象③JSP与JavaBean④JSP中使用数据库

实验四需要Tomcat连接数据库,很多同学都没能连上,还有JSP传值乱码等问题。所以以下报告,我将倒着写,先写实验四,然后实验三、二、一,代码都很简单易懂。

项目目录总览

实验四 JSP中使用数据库

步骤一:向External Libraries导入JDBC

不会的可以看这位博主写的  IDEA导入JDBC驱动的jar包_如何导入jdbc-CSDN博客

步骤二:用Java控制台检验JDBC连接是否成功

  1. package bean.data;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.Statement;
  5. public class test {
  6. public static void main(String[] args) throws Exception {
  7. Class.forName("com.mysql.jdbc.Driver");
  8. Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/book", "root", "请输入你的密码");
  9. String sql = "UPDATE bookform SET bookISBN = 3333 WHERE bookISBN = 987654";
  10. Statement stmt = conn.createStatement();
  11. int count = stmt.executeUpdate(sql);
  12. System.out.println(count);
  13. stmt.close();
  14. conn.close();
  15. }
  16. }

运行结果(数据库内容会被修改,在此不展示)

 

步骤三:让Tomcat连上数据库!

        点击“File”,选择“Project Structure”,再选择“Artifacts”,点图上的“加号”。

        选择“Web Application:Exploded——》From Modules”,添加 untitled1 模块后,我这里(不知道叫什么,姑且叫做“文件们”)是默认在“Available Elements”下,需要把 untitled1 模块下的所有“文件们”全部双击一遍,才能移到<output root>路径下,也就成了WEB-INF下的文件。

JSP向数据库中存入中文数据为问号の解决方法

  1. Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/book","root","***");
  2. //在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

  1. <%@ page language="java" contentType="text/html; charset=utf-8" %>
  2. <%@ page import="java.sql.*" %>
  3. <%@ page import="java.lang.*" %>
  4. <%@ page import="java.lang.String.*" %>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>Insert title here</title>
  9. </head>
  10. <body>
  11. <%
  12. request.setCharacterEncoding("utf-8");
  13. response.setCharacterEncoding("utf-8");
  14. %>
  15. <form action="">
  16. 输入查询内容:<input type="text" name="findContent" value=""/>
  17. <select name="condition" size=1>
  18. <option Selected value="bookISBN">ISBN</option>
  19. <option value="bookName">书名</option>
  20. <option value="bookAuthor">作者</option>
  21. <option value="bookPublish">出版社</option>
  22. <option value="bookTime">出版时间</option>
  23. <option value="bookAbstract">内容摘要</option>
  24. </select>
  25. <br>
  26. <input type="radio" name="findMethod" value="start"/>前方一致
  27. <input type="radio" name="findMethod" value="end"/>后方一致
  28. <input type="radio" name="findMethod" value="contains"/>包含
  29. <br>
  30. <input type="submit" value="提交"/>
  31. </form>
  32. <%
  33. String findContent = request.getParameter("findContent");
  34. if (findContent == null)
  35. findContent = "";
  36. String condition = request.getParameter("condition");
  37. if (condition == null)
  38. condition = "";
  39. String findMethod = request.getParameter("findMethod");
  40. if (findMethod == null)
  41. findMethod = "";
  42. if (findContent != null) {
  43. try {
  44. Class.forName("com.mysql.jdbc.Driver").newInstance();
  45. String url = "jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF8";
  46. String username = "root";
  47. String password = "请填自己的密码";
  48. Connection con = DriverManager.getConnection(url, username, password);
  49. Statement sql = con.createStatement();
  50. String s = "";
  51. if (findMethod.equals("start")) {
  52. s = "select * from bookform where " + condition + " like'" + findContent + "%'";
  53. } else if (findMethod.equals("end")) {
  54. s = "select * from bookform where " + condition + " like'%" + findContent + "'";
  55. } else if (findMethod.equals("contains")) {
  56. s = "select * from bookform where " + condition + " like'%" + findContent + "%'";
  57. }
  58. ResultSet rs = sql.executeQuery(s);
  59. %>
  60. <font size=4 align=center>查询到的图书</font>
  61. <table border=1>
  62. <tr>
  63. <th>ISBN</th>
  64. <th>图书名称</th>
  65. <th>作者</th>
  66. <th>价格</th>
  67. <th>出版社</th>
  68. <th>出版时间</th>
  69. <th>摘要</th>
  70. </tr>
  71. <%
  72. while(rs.next()){
  73. %>
  74. <tr>
  75. <td><%=rs.getString(1) %></td>
  76. <td><%=rs.getString(2) %></td>
  77. <td><%=rs.getString(3) %></td>
  78. <td><%=rs.getString(4) %></td>
  79. <td><%=rs.getString(5) %></td>
  80. <td><%=rs.getString(6) %></td>
  81. <td><textarea><%=rs.getString(7) %></textarea></td>
  82. </tr>
  83. <%
  84. }
  85. }catch(Exception e){
  86. out.print("没找到驱动");
  87. }
  88. }
  89. %>
  90. </body>
  91. </html>

运行结果

图1.1.1 输入数据

图1.1.2 点击“提交”后的界面

图1.1.3 对比数据库,验证输出信息正确

2、数据库更新操作

       仍然使用实验题目一中的数据库和表。编写一个JSP页面updateRecord.jsp,更改数据库中某条信息。

       updateRecord.jsp页面的效果如下图:

源代码

UpdateRecord.jsp

  1. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
  2. <%@ page import="java.sql.*" %>
  3. <%@ page import="java.lang.*" %>
  4. <%@ page import="java.lang.String.*" %>
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta charset="utf-8">
  9. <title>Insert title here</title>
  10. </head>
  11. <body>
  12. <%
  13. request.setCharacterEncoding("utf-8");
  14. response.setCharacterEncoding("utf-8");
  15. %>
  16. <form method="post" action="" name="form1">
  17. 输入图书的ISBN号,然后更新该图书的有关信息:
  18. <input type="text" name="bookISBN"/>
  19. <input type="submit" value="提交">
  20. </form>
  21. <br>
  22. <%
  23. String bookISBN = request.getParameter("bookISBN");
  24. String bookName = request.getParameter("bookName");
  25. String bookAuthor = request.getParameter("bookAuthor");
  26. String bookPrice = request.getParameter("bookPrice");
  27. String bookPublish = request.getParameter("bookPublish");
  28. String bookTime = request.getParameter("bookTime");
  29. String bookAbstract = request.getParameter("bookAbstract");
  30. if (bookISBN != null) {
  31. String info = "输入(" + bookISBN + ")的图书信息";
  32. out.println(info);
  33. try {
  34. Class.forName("com.mysql.jdbc.Driver").newInstance();
  35. } catch (ClassNotFoundException e) {
  36. out.print("没有找到驱动");
  37. }
  38. Connection con;
  39. con = DriverManager.getConnection("jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF8","root","请输入你的密码");
  40. Statement sql = con.createStatement();
  41. String s = "";
  42. s = "select * from bookform where bookISBN=" + bookISBN;
  43. ResultSet rs = sql.executeQuery(s);
  44. %>
  45. <br>
  46. <form method="post" name="form2" action="">
  47. <table border=1>
  48. <%while (rs.next()) { %>
  49. <tr>
  50. <th>图书名称:</th>
  51. <%
  52. String temp=rs.getString(2);
  53. %>
  54. <td><input type="text" value="<%=rs.getString(2)%>" name="bookName"></td>
  55. </tr>
  56. <tr>
  57. <th>图书作者:</th>
  58. <td><input type="text" value="<%=rs.getString(3)%>" name="bookAuthor"></td>
  59. </tr>
  60. <tr>
  61. <th>图书价格:</th>
  62. <td><input type="text" value="<%=rs.getString(4)%>" name="bookPrice"></td>
  63. </tr>
  64. <tr>
  65. <th>出版社:</th>
  66. <td><input type="text" value="<%=rs.getString(5)%>" name="bookPublish"></td>
  67. </tr>
  68. <tr>
  69. <th>出版社时间:</th>
  70. <td><input type="text" value="<%=rs.getString(6)%>" name="bookTime"></td>
  71. </tr>
  72. <tr>
  73. <th>图书摘要:</th>
  74. <td><textarea name="bookAbstract"><%=rs.getString(7)%></textarea></td>
  75. </tr>
  76. <tr>
  77. <td><input type="hidden" name="bookISBN" value="<%=rs.getString(1)%>"></td>
  78. <td><input type="submit" value="提交"></td>
  79. </tr>
  80. </table>
  81. </form>
  82. <%
  83. }
  84. %>
  85. <%
  86. if (bookName != null && bookAuthor != null && bookPrice != null && bookPublish != null && bookTime != null && bookAbstract != null) {
  87. String update1;
  88. Connection con1;
  89. con1 = DriverManager.getConnection("jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF8", "root", "请输入你的密码");
  90. update1 = "update bookform set bookName='" + bookName + "'," + "bookAuthor='" + bookAuthor + "'," + "bookPrice="
  91. + bookPrice + "," + "bookPublish='" + bookPublish + "'," + "bookTime='" + bookTime + "'," + "bookAbstract='" + bookAbstract +
  92. "' where bookISBN=" + bookISBN;
  93. Statement sql1 = con1.createStatement();
  94. int r1 = sql1.executeUpdate(update1);
  95. if (r1 >= 0) {
  96. out.println("修改成功!");
  97. response.setHeader("refresh", "4");
  98. }
  99. }
  100. }
  101. %>
  102. </body>
  103. </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

  1. <%@ page contentType="text/html;charset=UTF-8" language="java"%>
  2. <jsp:useBean id="computer" class="bean.data.PC" scope="request" />
  3. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  4. <%
  5. request.setCharacterEncoding("utf-8");
  6. response.setCharacterEncoding("utf-8");
  7. %>
  8. <html>
  9. <body bgcolor="yellow">
  10. <form action="" method="post">
  11. 电脑品牌:<input type="text" name="pinpai"> <br>
  12. 电脑型号:<input type="text" name="xinghao"> <br>
  13. 生产日期:<input type="text" name="riqi">
  14. <input type="submit" value="提交">
  15. </form>
  16. <jsp:setProperty name="computer" property="*" />
  17. <table border="1">
  18. <tr>
  19. <th>电脑品牌</th>
  20. <th>电脑型号</th>
  21. <th>生产日期</th>
  22. </tr>
  23. <tr>
  24. <th><jsp:getProperty name="computer" property="pinpai" /></th>
  25. <th><jsp:getProperty name="computer" property="xinghao" /></th>
  26. <th><jsp:getProperty name="computer" property="riqi" /></th>
  27. </tr>
  28. </table>
  29. </body>
  30. </html>

PC.java

  1. package bean.data;
  2. public class PC {
  3. String pinpai, xinghao, riqi;
  4. public PC() {
  5. }
  6. public String getPinpai() {
  7. return pinpai;
  8. }
  9. public void setPinpai(String pinpai) {
  10. this.pinpai = pinpai;
  11. }
  12. public String getXinghao() {
  13. return xinghao;
  14. }
  15. public void setXinghao(String xinghao) {
  16. this.xinghao = xinghao;
  17. }
  18. public String getRiqi() {
  19. return riqi;
  20. }
  21. public void setRiqi(String time) {
  22. this.riqi = time;
  23. }
  24. }

运行结果

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

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <jsp:useBean id="computer" class="bean.data.PC" scope="session" />
  3. <%
  4. request.setCharacterEncoding("utf-8");
  5. response.setCharacterEncoding("utf-8");
  6. %>
  7. <html>
  8. <body bgcolor="#adff2f">
  9. <font size="2">
  10. <form action="" method="post">
  11. 电脑品牌:<input type="text" name="pinpai"><br>
  12. 电脑型号:<input type="text" name="xinghao"><br>
  13. 生产日期:<input type="text" name="riqi">
  14. <input type="submit" value="提交">
  15. </form>
  16. <jsp:setProperty name="computer" property="*" />
  17. <A href="show.jsp">访问show.jsp,查看有关信息。</A>
  18. </font>
  19. </body>
  20. </html>

show.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <jsp:useBean id="computer" class="bean.data.PC" scope="session" />
  3. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  4. <%
  5. request.setCharacterEncoding("utf-8");
  6. response.setCharacterEncoding("utf-8");
  7. %>
  8. <html>
  9. <body bgcolor="#7fffd4">
  10. <table border="1">
  11. <tr>
  12. <th>电脑品牌</th>
  13. <th>电脑型号</th>
  14. <th>生产日期</th>
  15. </tr>
  16. <tr>
  17. <th><jsp:getProperty name="computer" property="pinpai" /></th>
  18. <th><jsp:getProperty name="computer" property="xinghao" /></th>
  19. <th><jsp:getProperty name="computer" property="riqi" /></th>
  20. </tr>
  21. </table>
  22. </body>
  23. </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

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <jsp:useBean id="board" class="bean.data.MessBoard" scope="application"/>
  3. <%
  4. request.setCharacterEncoding("utf-8");
  5. response.setCharacterEncoding("utf-8");
  6. %>
  7. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  8. <html>
  9. <body>
  10. <form action="" method="post" name="form">
  11. 输入你的名字:<br><input type="text" name="name"><br>
  12. 输入你的留言标题:<br><input type="text" name="title"><br>
  13. 输入你的留言:<br><textarea name="content" rows="10" cols="36" wrap="soft"></textarea><br>
  14. <input type="submit" value="提交信息" name="submit">
  15. </form>
  16. <jsp:setProperty name="board" property="*"/>
  17. <a href="showMess.jsp">查看留言板</a>
  18. </body>
  19. </html>

showMess.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <jsp:useBean id="board" class="bean.data.MessBoard" scope="application"/>
  3. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  4. <%
  5. request.setCharacterEncoding("utf-8");
  6. response.setCharacterEncoding("utf-8");
  7. %>
  8. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  9. <html>
  10. <body bgcolor="#6495ed">
  11. <jsp:getProperty name="board" property="allMessage"/>
  12. <a href="inputMess.jsp">我要留言</a>
  13. </body>
  14. </html>

MessBoard.java

  1. package bean.data;
  2. import java.text.SimpleDateFormat;
  3. import java.util.ArrayList;
  4. import java.util.Date;
  5. public class MessBoard {
  6. String name,title,content;
  7. StringBuffer allMessage;
  8. ArrayList<String> savedName,savedTitle,savedContent,savedTime;
  9. private String t;
  10. public MessBoard() {
  11. savedName = new ArrayList<String>();
  12. savedTitle = new ArrayList<String>();
  13. savedContent = new ArrayList<String>();
  14. savedTime = new ArrayList<String>();
  15. }
  16. public void setName(String s) {
  17. this.name = s;
  18. savedName.add(name);
  19. Date time = new Date();
  20. SimpleDateFormat matter = new SimpleDateFormat("yyyy-mm-dd,HH:mm:ss");
  21. String messTime = matter.format(time);
  22. savedTime.add(messTime);
  23. }
  24. public void setTitle(String t) {
  25. this.title = t;
  26. savedTitle.add(title);
  27. }
  28. public void setContent(String c) {
  29. /*try {
  30. byte b[] = c.getBytes("ISO-8859-1");
  31. c = new String(b);
  32. } catch (Exception e) {}*/
  33. this.content = c;
  34. savedContent.add(content);
  35. }
  36. public StringBuffer getAllMessage() {
  37. allMessage = new StringBuffer();
  38. allMessage.append("<table border=1>");
  39. allMessage.append("<tr>");
  40. allMessage.append("<th>留言者姓名</th>");
  41. allMessage.append("<th>留言标题</th>");
  42. allMessage.append("<th>留言内容</th>");
  43. allMessage.append("<th>留言时间</th>");
  44. allMessage.append("</tr>");
  45. for (int k = 0; k < savedName.size(); k++) {
  46. allMessage.append("<tr>");
  47. allMessage.append("<td>");
  48. allMessage.append(savedName.get(k));
  49. allMessage.append("</td>");
  50. allMessage.append("<td>");
  51. allMessage.append(savedTitle.get(k));
  52. allMessage.append("</td>");
  53. allMessage.append("<td>");
  54. allMessage.append("<textarea>");
  55. allMessage.append(savedContent.get(k));
  56. allMessage.append("</textarea>");
  57. allMessage.append("</td>");
  58. allMessage.append("<td>");
  59. allMessage.append(savedTime.get(k));
  60. allMessage.append("</td>");
  61. allMessage.append("</tr>");
  62. }
  63. allMessage.append("</table>");
  64. return allMessage;
  65. }
  66. }

运行结果

图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

  1. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="utf-8">
  6. <title>Insert title here</title>
  7. </head>
  8. <body>
  9. <form action="information.jsp" method="post">
  10. 姓名:<input type="text" name="username"><br>
  11. 密码:<input type="password" name="pwd"><br>
  12. 年龄:<select size="1" name="age">
  13. <%for (int i = 1; i <= 100; ++i) {%>
  14. <option value="<%=i%>"><%=i%>
  15. </option>
  16. <%} %>
  17. </select><br>〉
  18. 性别:<input type="radio" name="sex" value="男">男
  19. <input type="radio" name="sex" value="女">女<br>
  20. 自我介绍:<textarea rows="8" cols="30" name="introduction">
  21. </textarea><br>
  22. <input type="submit" value="提交">
  23. <input type="reset" value="reset">
  24. </form>
  25. </body>
  26. </html>

information.jsp

  1. <%@ page language="java" contentType="text/html; charset=GBK"
  2. pageEncoding="utf-8" %>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="utf-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <%
  11. request.setCharacterEncoding("utf-8");
  12. response.setCharacterEncoding("utf-8");
  13. String strUsername = request.getParameter("username");
  14. String strpwd = request.getParameter("pwd");
  15. String strage = request.getParameter("age");
  16. String strsex = request.getParameter("sex");
  17. String strIntroduction = request.getParameter("introduction");
  18. %>
  19. 用户名是:<%=strUsername%><br>
  20. 密码是:<%=strpwd%><br>
  21. 你的年龄是:<%=strage%><br>
  22. 你的性别是:<%=strsex%><br>
  23. 你的简介:<%=strIntroduction%><br>
  24. </body>
  25. </html>

运行结果

图2.1.1 输入信息

图2.1.2 按下“reset”键后

图2.1.3 按下“提交”键后

2、页面刷新

        使用response对象控制页面3秒钟刷新一次。(使用java.util.Date函数显示时间)。

源代码

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8" %>
  3. <%@page import="java.util.*" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>Insert title here</title>
  9. </head>
  10. <body>
  11. <p>现在的时间是:<br>
  12. <%
  13. out.println(""+new Date());
  14. response.setHeader("Refresh", "3");
  15. %>
  16. </body>
  17. </html>

运行结果

 图2.2.1 每3秒刷新一次

3、页面跳转

        使用response对象的重定向功能实现页面跳转。在实验题目1中如果表单的姓名在没有填写或为空的情况下提交时,将页面重新定向到注册页面。

源代码

register.jsp

  1. <%@ page language="java" contentType="text/html; charset=utf-8"
  2. pageEncoding="utf-8" %>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="utf-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <form action="information.jsp" method="post">
  11. 姓名:<input type="text" name="username"><br>
  12. 密码:<input type="password" name="pwd"><br>
  13. 年龄:<select size="1" name="age">
  14. <%for (int i = 1; i <= 100; ++i) {%>
  15. <option value="<%=i%>"><%=i%>
  16. </option>
  17. <%} %>
  18. </select><br>〉
  19. 性别:<input type="radio" name="sex" value="男">男
  20. <input type="radio" name="sex" value="女">女<br>
  21. 自我介绍:<textarea rows="8" cols="30" name="introduction">
  22. </textarea><br>
  23. <input type="submit" value="提交">
  24. <input type="reset" value="reset">
  25. </form>
  26. </body>
  27. </html>

information.jsp

  1. <%@ page language="java" contentType="text/html; charset=GBK"
  2. pageEncoding="utf-8" %>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="utf-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <%
  11. request.setCharacterEncoding("utf-8");
  12. response.setCharacterEncoding("utf-8");
  13. String strUsername = request.getParameter("username");
  14. if (strUsername == "") response.sendRedirect("register.jsp");
  15. String strpwd = request.getParameter("pwd");
  16. String strage = request.getParameter("age");
  17. String strsex = request.getParameter("sex");
  18. String strIntroduction = request.getParameter("introduction");
  19. %>
  20. 用户名是:<%=strUsername%><br>
  21. 密码是:<%=strpwd%><br>
  22. 你的年龄是:<%=strage%><br>
  23. 你的性别是:<%=strsex%><br>
  24. 你的简介:<%=strIntroduction%><br>
  25. </body>
  26. </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

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>inputWord</title>
  5. </head>
  6. <body bgcolor=cyan>
  7. <form action="showDictionary.jsp" method=get name=form> 请输入单词(用空格分隔):
  8. <input type="text" name="word"> <br>
  9. <input type="submit" value="发送" name=submit>
  10. </form>
  11. </body>
  12. </html>

 showWord.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <%@ page import="java.util.*" %>
  3. <html>
  4. <head>
  5. <title>showDictionary</title>
  6. </head>
  7. <body bgcolor="yellow">
  8. <%!
  9. TreeSet<String> dictionary = new TreeSet<String>();
  10. public void addWord(String s) {
  11. String word[] = s.split(" ");
  12. for (int i = 0; i < word.length; i++) {
  13. dictionary.add(word[i]);
  14. }
  15. }
  16. %>
  17. <%
  18. String str = request.getParameter("word");
  19. addWord(str);
  20. Iterator<String> te = dictionary.iterator();
  21. while (te.hasNext()) {
  22. String word = te.next();
  23. out.print(" " + word);
  24. }
  25. %>
  26. </body>
  27. </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

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Insert title here</title>
  7. </head>
  8. <body>
  9. 读取名字是ok.txt的文件:
  10. <jsp:include page="readFile.jsp">
  11. <jsp:param value="D:/ok.txt" name="file"/>
  12. </jsp:include>
  13. </body>
  14. </html>

readFile.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
  2. <%@ page import="java.io.*" %>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <p>
  11. <font size=2 color=blue>
  12. This is readFile.jsp.
  13. </font>
  14. <font size=4>
  15. <%
  16. String s = request.getParameter("file");
  17. File f = new File(s);
  18. if (f.exists()) {
  19. out.println("<br>文件" + s + "的内容:");
  20. FileReader in = new FileReader(f);
  21. BufferedReader Bin = new BufferedReader(in);
  22. String line;
  23. while ((line = Bin.readLine()) != null) {
  24. out.println("<br>" + line);
  25. }
  26. } else {%>
  27. <jsp:forward page="error.jsp">
  28. <jsp:param name="mess" value="File Not Found"/>
  29. </jsp:forward>
  30. <%
  31. }
  32. %>
  33. </font>
  34. </body>
  35. </html>

 error.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Insert title here</title>
  7. </head>
  8. <body bgcolor=yellow>
  9. <p>
  10. <font size=5 color=red>
  11. This is error.jsp.
  12. </font>
  13. <%
  14. String s=request.getParameter("mess");
  15. out.println("<br>本页面得到的信息:"+s);
  16. %>
  17. </body>
  18. </html>

运行结果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/575386
推荐阅读
相关标签
  

闽ICP备14008679号