web后端开发-实现Web端线上投票程序(简易版的改进)

web后端开发

实现Web端线上投票程序(简易版的改进)

https://blog.csdn.net/m0_74394367/article/details/137904654

web后端开发-实现Web端线上投票程序(简易版)的改进

业务流程实现要求:

1、用户访问投票网站首页index.html,提示用户输入姓名,点击“开始投票”;

2、点击“开始投票”,请求提交至LoginServlet,获取用户姓名,存入session对象,重定向至投票页面“vote.html”;

3、用户选择投票选项(可多选),点击“提交投票”,示例页面如下:


4.点击“提交投票”,请求提交至VoteServlet,获取并保存投票结果后,重定向至“voteseccess.html”;

5. “voteseccess.html”,可以通过超链接查询投票结果;

6.“查询投票结果”提交至ListServlet,显示全部投票结果。

7.采用注解的方式

代码:

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>投票首页</title>
</head>
<body>
	<p>请输入投票人姓名:</p>
	<form action="loginservlet" method="post">
		<input type="text" name="user"/><br><br>
		<input type="submit" value="开始投票"/>
	</form>
</body>
</html>

LoginServlet.java创建servlet文件的URL映射均改为了小写,LoginServlet->loginservlet,VoteServlet->voteservlet,ListServlet->listservlet

package edu.hbun.work5.users;

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

import javax.servlet.ServletConfig;
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 javax.servlet.http.HttpSession;
//实现Web端线上投票程序
//业务流程实现建议:
//1、用户访问投票网站首页index.html,提示用户输入姓名,点击“开始投票”;
//2、点击“开始投票”,请求提交至LoginServlet,获取用户姓名,存入session对象,重定向至投票页面“vote.html”;
//3、用户选择投票选项(可多选),点击“提交投票”,示例页面如下: 
//4.点击“提交投票”,请求提交至VoteServlet,获取并保存投票结果后,重定向至“voteseccess.html”;
//5. “voteseccess.html”,可以通过超链接查询投票结果;
//6.“查询投票结果”提交至ListServlet,显示全部投票结果。
/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/loginservlet")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }


	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//从HTTP请求中获取名为"user"的参数值,并将其存储在user变量中
		String user = request.getParameter("user");
//		response.setCharacterEncoding("GBK");//避免中文乱码
		//检查user是否为空或仅包含空格字符
		if (user == null || user.trim().isEmpty()) {
			//设置响应的内容类型为HTML,并指定字符编码为UTF-8
            response.setContentType("text/html;charset=UTF-8");
            //获取响应的输出流对象,以便向客户端发送数据
            PrintWriter writer = response.getWriter();
//            writer.println("<script>alert('用户名不可为空');</script>");
            //点击弹窗中的确定之后,便会跳转到index.html即一开始的登录页面
            response.getWriter().print("<script>alert('用户名不可为空');window.location.href='index.html'</script>"); 
        } else {
        	request.setCharacterEncoding("UTF8");
        	//把投票人存入session对象
        	//获取当前请求的会话对象
        	HttpSession session = request.getSession();
        	//将会话中的"user"属性设置为user的值
            session.setAttribute("user", user);
            //重定向跳转到名为"vote.html"的页面
            response.sendRedirect("vote.html");
        }
		
	}

}

vote.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="voteservlet" method="post">
	    <label>请选择您喜欢的水果:</label><br>
	    <input type="checkbox" value="apple" name="fruits">苹果<br>
	    <input type="checkbox" value="banana" name="fruits">香蕉<br>
	    <input type="checkbox" value="orange" name="fruits">橙子<br>
	    <input type="checkbox" value="pear" name="fruits">梨<br>
	    <input type="checkbox" value="tomato" name="fruits">西红柿<br>
		<input type="submit" value="提交投票"/>
	</form>
</body>
</html>

VoteServlet.java

package edu.hbun.work5.users;

import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class VoteServlet
 */
@WebServlet(
		urlPatterns = { "/voteservlet" }, 
		initParams = { 
				@WebInitParam(name = "isFirst", value = "1")
		})
public class VoteServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private int isFirst = -1;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public VoteServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException {
		//获取初始化参数,并赋值给属性
		this.isFirst=Integer.parseInt(config.getInitParameter("isFirst"));
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取或创建整形数组
		int[] voteResult = {0,0,0,0,0};
		if(isFirst==1){
			isFirst = 0;//创建
		}else{
			voteResult = (int[]) request.getServletContext().getAttribute("vr");//获取
		}
		//更新投票数值
		String[] choices = request.getParameterValues("fruits");
		for(int i=0;i<choices.length;i++){
			if("apple".equals(choices[i])){
				voteResult[0]++;
			}
			else if("banana".equals(choices[i])){
				voteResult[1]++;
			}
			else if("orange".equals(choices[i])){
				voteResult[2]++;
			}
			else if("pear".equals(choices[i])){
				voteResult[3]++;
			}
			else if("tomato".equals(choices[i])){
				voteResult[4]++;
			}
		}
		//保存最新的投票结果
		request.getServletContext().setAttribute("vr", voteResult);
		response.sendRedirect("voteseccess.html");
	}

}

voteseccess.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<p>感谢您的参与!</p><br>
	<a href="listservlet">查询投票结果</a>
</body>
</html>

ListServlet.java

package edu.hbun.work5.users;

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 ListServlet
 */
@WebServlet("/listservlet")
public class ListServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ListServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取投票结果
		int[] voteResult = (int[]) request.getServletContext().getAttribute("vr");
		//准备输出流
		response.setCharacterEncoding("GBK");
		PrintWriter w = response.getWriter();
		//输出投票结果
		w.print("<table><tr><td>当前投票结果</td></tr>");
		w.print("<table><tr><td>苹果:</td><td>"+ voteResult[0]+"票</td></tr>");
		w.print("<table><tr><td>香蕉:</td><td>"+ voteResult[1]+"票</td></tr>");
		w.print("<table><tr><td>橙子:</td><td>"+ voteResult[2]+"票</td></tr>");
		w.print("<table><tr><td>梨:</td><td>"+ voteResult[3]+"票</td></tr>");
		w.print("<table><tr><td>西红柿:</td><td>"+ voteResult[4]+"票</td></tr>");
	}

	/**
	 * @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);
	}

}

结果:

可继续进行投票,此项目不停止运行,投票结果会在此基础上进行累加(项目不停止运行,在另一个浏览器打开此网站,也可累加)。

效果可查看https://blog.csdn.net/m0_74394367/article/details/137904654结果中的效果图

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值