Jsp+Servlet实现简单网上测试小程序

Jsp+Servlet实现简单网上测试小程序

要求:写一个网上测试小程序,包含填空题、多选题、单选题和判断题,最后进行评分。

jsp

设计一个表单,里面包含两道填空题、两道单选题、一道判断题、一道多选题及一个提交按钮。表单采用POST提交方法,将数据提交到test2中进行运算,得出得分。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>基础知识在线测试</title>
<link rel="stylesheet" href="<%=request.getContextPath() %>/css/test2.css">
</head>
<body>
	<div id="main">
		<div id="title" style="margin:20px 200px;">
			<h2>在线测试</h2>
		</div>
		<form action="test2" method="post">
			<div class="test">
				<label>1、面向对象语言的三大特性有多态、继承和</label>
				<input type="text" value="" name="t1" class="input-text">10分)
			</div>
			<div class="test">
				<label>2、Java中修饰类或者属性为抽象的关键字是</label>
				<input type="text" value="" name="t2" class="input-text">10分)
			</div>
			<div class="test">
				<label>3、Java属于下列哪种语言?(20分)</label><br>
				<input type="radio" value="A" name="t3">汇编语言
				<input type="radio" value="B" name="t3">机器语言
				<input type="radio" value="C" name="t3">高级语言
				<input type="radio" value="D" name="t3">自然语言
			</div>
			<div class="test">
				<label>4、下列哪个是HTML中的行内元素?(20分)</label><br>
				<input type="radio" value="A" name="t4">form
				<input type="radio" value="B" name="t4">p
				<input type="radio" value="C" name="t4">audio
				<input type="radio" value="D" name="t4">button
			</div>
			<div class="test">
				<label>5、一个负数的补码还是它本身。(10分)</label><br>
				<input type="radio" value="true" name="t5"><input type="radio" value="false" name="t5"></div>
			<div class="test">
				<label>6、下列哪些属于面向对象的程序语言?(30分)</label><br>
				<input type="checkbox" value="A" name="t6">C
				<input type="checkbox" value="B" name="t6">Java
				<input type="checkbox" value="C" name="t6">C++
				<input type="checkbox" value="D" name="t6">C#
			</div>
			<div class="test" style="margin:20px 200px;">
				<input type="submit" name="submit" value="提交" class="submit">
			</div>
		</form>
	</div>
</body>
</html>

servlet

编写一个计算得分的servlet。获取表单提交的数据,计算出结果并输出到页面。

package com.bnuz;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Test2
 */
@WebServlet("/Test2")
public class Test2 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public Test2() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 防止中文乱码
		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("UTF-8");

		int total_score = 0;// 总分

		String[] answer = { "封装", "abstract", "C", "D", "false" };// 1-5题答案
		int[] score = { 10, 10, 20, 20, 10 };// 1-5题分值
		// 计算第1-5题得分
		for (int i = 1; i <= answer.length; i++) {
			String t = request.getParameter("t" + i);
			if (answer[i - 1].equals(t)) {
				total_score += score[i - 1];
			}
		}
		// 计算第6题得分
		String[] t6 = request.getParameterValues("t6");
		if (t6.length == 3) {
			if ("B".equals(t6[0]) && "C".equals(t6[1]) && "D".equals(t6[2])) {
				total_score += 30;
			}
		}

		PrintWriter out = response.getWriter();
		out.print("您本次的得分为:" + total_score);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>Demo2</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
  	<servlet-name>Test2</servlet-name>
  	<servlet-class>com.bnuz.Test2</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>Test2</servlet-name>
  	<url-pattern>/test2</url-pattern>
  </servlet-mapping>
</web-app>

css

#main{
	width:580px;
	margin:0 auto;
	height:600px;
}

.test{
	margin-top:15px;
}

.input-text{
	border:0;
	border-bottom:1px solid black;
	width:70px;
}

.submit{
	width:100px;
	height:35px;
	background-color: rgb(145, 233, 255);
}

运行结果

在这里插入图片描述
━━( ̄ー ̄*|||━━菜鸟一枚,如有问题,欢迎指出。

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是使用 IDEA + Tomcat + Servlet 实现登录注册的示例代码。 在这个示例代码中,我们使用了 MySQL 数据库来存储用户的信息。在使用该示例代码之前,您需要先在本地安装 MySQL 数据库,并创建一个名为 `user_info` 的数据库,在该数据库中创建一个名为 `users` 的表,表结构如下: ``` CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; ``` 该表用于存储用户的用户名和密码。 在开始编写代码之前,您需要先下载并安装 MySQL Connector/J,该驱动程序用于连接 MySQL 数据库。 接下来,我们将编写一个登录页面和一个注册页面。当用户提交登录或注册表单时,我们将使用 Servlet 处理用户的请求,并将用户的信息存储到数据库中。 登录页面 (`login.jsp`) 的代码如下: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login Page</title> </head> <body> <h1>Login Page</h1> <form action="login" method="post"> <label>Username:</label> <input type="text" name="username"><br> <label>Password:</label> <input type="password" name="password"><br> <input type="submit" value="Login"> </form> <p>Not registered yet? <a href="register.jsp">Register here</a>.</p> </body> </html> ``` 注册页面 (`register.jsp`) 的代码如下: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Register Page</title> </head> <body> <h1>Register Page</h1> <form action="register" method="post"> <label>Username:</label> <input type="text" name="username"><br> <label>Password:</label> <input type="password" name="password"><br> <input type="submit" value="Register"> </form> <p>Already registered? <a href="login.jsp">Login here</a>.</p> </body> </html> ``` 接下来,我们将编写 Servlet 处理用户的登录和注册请求。在 IDEA 中,可以使用 “File → New → Project” 命令创建一个新的 Web 应用程序项目,并选择 “JavaEE” 和 “Web Application” 作为项目类型。 在项目中,我们创建一个名为 `LoginServlet` 的 Java 类,用于处理用户的登录请求。代码如下: ```java package com.example; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @WebServlet("/login") public class LoginServlet extends HttpServlet { private static final String DB_URL = "jdbc:mysql://localhost:3306/user_info"; private static final String DB_USER = "root"; private static final String DB_PASSWORD = "password"; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); PrintWriter out = response.getWriter(); try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { out.println("Error: unable to load driver class!"); return; } Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); String sql = "SELECT * FROM users WHERE username=? AND password=?"; stmt = conn.prepareStatement(sql); stmt.setString(1, username); stmt.setString(2, password); rs = stmt.executeQuery(); if (rs.next()) { out.println("Login successful!"); } else { out.println("Invalid username or password!"); } } catch (SQLException e) { out.println("Error: " + e.getMessage()); } finally { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { out.println("Error: " + e.getMessage()); } } } } ``` 在上面的代码中,我们首先获取用户提交的用户名和密码,然后使用 JDBC 连接到 MySQL 数据库,并查询表中是否存在该用户的信息。如果存在,则输出 “Login successful!”;否则,输出 “Invalid username or password!”。 接下来,我们创建一个名为 `RegisterServlet` 的 Java 类,用于处理用户的注册请求。代码如下: ```java package com.example; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; @WebServlet("/register") public class RegisterServlet extends HttpServlet { private static final String DB_URL = "jdbc:mysql://localhost:3306/user_info"; private static final String DB_USER = "root"; private static final String DB_PASSWORD = "password"; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); PrintWriter out = response.getWriter(); try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { out.println("Error: unable to load driver class!"); return; } Connection conn = null; PreparedStatement stmt = null; try { conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); String sql = "INSERT INTO users (username, password) VALUES (?, ?)"; stmt = conn.prepareStatement(sql); stmt.setString(1, username); stmt.setString(2, password); stmt.executeUpdate(); out.println("Registration successful!"); } catch (SQLException e) { out.println("Error: " + e.getMessage()); } finally { try { if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { out.println("Error: " + e.getMessage()); } } } } ``` 在上面的代码中,我们首先获取用户提交的用户名和密码,然后使用 JDBC 连接到 MySQL 数据库,并将用户的信息插入到表中。如果插入成功,则输出 “Registration successful!”;否则,输出错误信息。 最后,我们需要将登录页面和注册页面链接到 Servlet 上。在 `web.xml` 文件中,添加以下内容: ```xml <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.example.LoginServlet</servlet-class> </servlet> <servlet> <servlet-name>RegisterServlet</servlet-name> <servlet-class>com.example.RegisterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>RegisterServlet</servlet-name> <url-pattern>/register</url-pattern> </servlet-mapping> ``` 在上面的配置中,我们将 `LoginServlet` 映射到 `/login` URL 上,将 `RegisterServlet` 映射到 `/register` URL 上。 现在,您可以使用 Tomcat 运行该应用程序,并在浏览器中打开登录页面 (`http://localhost:8080/login.jsp`) 或注册页面 (`http://localhost:8080/register.jsp`) 进行测试了。 希望这个示例代码能够帮助您使用 IDEA + Tomcat + Servlet 实现登录注册的小项目。如果您有任何疑问或需要进一步帮助,请随时回复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值