第一次搭载jsp页面

项目场景:

最近学校出了一个任务,要求每班出一个编程能力较强的人,编写一个项目,由于博主是转专业的学生,不用参加即将到来的军训,所以最后排来排去,最后还好排到了博主的头上,博主大概用了3天将大概的框架搭建好了,这次博客主要记录一下自己的艰辛历程


问题描述:

项目要求,扫描一个二维码,直接跳转到另一个页面,这个页面要有一个心理的小游戏,考虑到博主有自己的服务器,选择跳转到一个jsp页面,对于编写jsp页面的游戏,完全不会,最后考虑要充分发挥自身有事利用自己浅薄的知识,借鉴java武老师的建议写一个类似试卷调查的测试页面,在此特别感谢武老师,半夜十二点多还无偿帮我看代码。


解决方案:

  1. 二维码跳jsp页面

博主这是运用到了自学python的知识。
安装需要的第三方库

pip install image
pip install pillow
pip install qrcode

python代码

import qrcode#导入库

qr = qrcode.QRCode(
	version=2,
	error_correction=qrcode.constants.ERROR_CORRECT_L,
	box_size=10,
	border=1
)#设置二维码的大小

#设置要转换的网址
qr.add_data("http://www.chaogezuishuai.top:8080/xl/xinli.jsp")
qr.make(fit=True)
img = qr.make_image()

#保存为png图片
img.save("xinli.png")
print("生成成功\n")
  1. 获取题目(百度搜的)

不重要,略过。

  1. 初步编写jsp页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<meta charset="UTF-8">
<title>心理小游戏</title>
<style>
	body{background:url(1.png)  
			no-repeat center center;
  			background-size:cover;
   			background-attachment:fixed;
   			background-color:#CCCCCC;}
</style>
</head>
<body>
	<script type="text/javascript">
	alert("放轻松,接下来让我们一起做一个小测试。");
      </script>
     <form action="js.jsp" methon="post">
     	<%@ include file="xinli.txt" %>
     </form>
</body>
</html>

这里重点看21行,使用了include标记导入一个txt文本。
txt文本样式

	 <p>
     	第一题:平时不知为什么总觉得心慌意乱,坐立不安。
     </p>
     <input name="1" type="radio" value=2 checked="checked"/>常常是<br/>
	 <input name="1" type="radio" value=1 checked="checked"/>偶尔<br>
	 <input name="1" type="radio" value=0 checked="checked"/>完全没有<br>
	 
	  <p>
     	第二题:上床后,怎么也睡不着,即使睡着也容易惊醒。
     </p>
     <input name="2" type="radio" value=2 checked="checked"/>常常是<br/>
	 <input name="2" type="radio" value=1 checked="checked"/>偶尔<br>
	 <input name="2" type="radio" value=0 checked="checked"/>完全没有<br>
	 <input type="submit" value="送出" name=submit width=>

类似这样的题目大约有40个,如果一个个手写会累死人的。
但博主可是会python得人,手写就不用专门导入一个txt文本了,决定由Python写这个txt文本。

  1. 需求分析

经过分析这里要使用两个函数。
1.一个可以输出大写数字的函数。
2.打开题库遍历所有行,并提出来,写到另一个文件里。
第一个

def shuzi(a):
    s=["零","一","二","三","四","五","六","七","八","九","十"]
    if (a<11):
        return s[a]
    elif(a<20):
        ten=int(a/10)
        ge=a-ten*10
        b=s[10]+s[ge]
        return b
    elif(a%10==0):
        ten = int(a / 10)
        return s[ten]+s[10]
    else:
        ten = int(a / 10)
        ge = a - ten * 10
        return s[ten]+s[10]+s[ge]

这个函数可以接受一个小于100的阿拉伯数字,返回相应的大写数字。
第二个

from shuzi import shuzi
f= open("心理.txt","r")
for line in f:
    with open("xinli.txt","a") as s:
        s.write("<p>"+'\n')
        s.write("第"+shuzi(int(line.split(".")[0]))+"题:"+line.split(".")[1])
        s.write("</p>"+'\n')
        s.write("<input name="+str(int(line.split(".")[0]))+" type="+"radio"+" value=2 checked="+"checked"+"/><p>常常是</p><br/>"+'\n')
        s.write("<input name="+str(int(line.split(".")[0]))+" type="+"radio"+" value=1 checked="+"checked"+"/><p>偶尔</p><br/>"+'\n')
        s.write("<input name="+str(int(line.split(".")[0]))+" type="+"radio"+" value=0 checked="+"checked"+"/><p>完全没有</p><br/>"+'\n')
f.close()

这个函数可以写出jsp页面直接能识别的格式
运行之后的结果
在这里插入图片描述
不知道是什么原因出了乱码,查询了各种资料之后,只要在TXT文件中加一行代码就行,博主直接加到了Python文件中。

from shuzi import shuzi
#解决乱码问题
with open("xinli.txt","a") as s:
    s.write("<%@page pageEncoding="+'"UTF-8"'+"%>"+"\n")
f= open("心理.txt","r")

for line in f:
    with open("xinli.txt","a") as s:
        s.write("<p>"+'\n')
        s.write("第"+shuzi(int(line.split(".")[0]))+"题:"+line.split(".")[1])
        s.write("</p>"+'\n')
        s.write("<input name="+str(int(line.split(".")[0]))+" type="+"radio"+" value=2 checked="+"checked"+"/><p>常常是</p><br/>"+'\n')
        s.write("<input name="+str(int(line.split(".")[0]))+" type="+"radio"+" value=1 checked="+"checked"+"/><p>偶尔</p><br/>"+'\n')
        s.write("<input name="+str(int(line.split(".")[0]))+" type="+"radio"+" value=0 checked="+"checked"+"/><p>完全没有</p><br/>"+'\n')
f.close()

运行后的TXT
在这里插入图片描述
第一行增加了代码。
再次运行结果
在这里插入图片描述
之后再将txt最后一行加一个提交按钮就好了
在这里插入图片描述

  1. 计算得分并返回相应结果

仔细观察之前的代码会发现博主将这个数据都提交到了一个js.jsp,现在开始编写这个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=pink>

<%	int grade=0;
	for(int i=1;i<40;i++){
	String s = Integer.toString(i);
	String score=request.getParameter(s);
	int w = Integer.parseInt(score);
	grade+=w;
	}
	if (grade<8)
		out.print("<font size=50px>你心理非常健康,请你放心</font>");
	else if (grade<16)
		out.print("<font size=50px>你大致还属于健康范围,但应有所注意,也可以找老师或同学聊聊。</font>");
	else if (grade<30)
		out.print("<font size=50px>你在心理方面有了一些障碍,应采取适当的方法进行调适,或找心理辅导老师帮助你。</font>");
	else if (grade<40)
		out.print("<font size=50px>你在心理方面有了一些障碍,应采取适当的方法进行调适,或找心理辅导老师帮助你。</font>");
	else
		out.print("<font size=50px>你有较严重的心理障碍,应及时找专门的心理医生治疗。</font>");
%>
</body>
</html>

博主用java程序片遍历每一个选项,并获取相应的分数(单选框对应的value值)进行相加,跟据对应的分数,返回对应的结果。
至此基本框架搭建完成,剩下的就是把页面弄得漂亮一点,不在多做赘述。
最后再次感谢为我提供思路的武老师,和教我jsp编写的贺老师,两位都是很优秀的老师。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值