实验目的

1、理解servlet技术的概念与特点;
2、掌握servlet程序开发和调试的方法。

实验内容

开发一个简单的在线教学网站系统,要求具备登录功能、注册和考试功能。
1)注册功能
用户注册页面,供用户输入用户名、密码等信息,然后可以返回到用户登录页面。
2)登录功能
用户登录页面,通过核对用户名和密码确认合法用户身份,用户合法则进入系统(即跳转到考试页面),失败则回到登录页面,让用户重新登录。
3)考试功能
在线考试页面,在本课程选取5题作为考试题目,每题20分,答题完毕计算并显示该次考试的成绩。

个人心得体会

本学期的javaweb课只有13周课(包含实验周),课时短学习的内容也不多,只能学到皮毛的。加上老师上课照读PPT因此,这章不少的理论内容还是靠着这次简单的实验得到了巩固。

个人注册页面的代码以及分析

  • javaweb主要开发的两个关键文件一个是Java文件,一个是jsp文件我们可以理解为jsp文件就是和前端三件套的html类似的,负责用来表示页面的元素,而Java文件则是需要编写jsp的相关逻辑也就是后端。

Register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>注册页面</title>
</head>
<body>
<form action="register.do" method="post">账号:<input type="text" name="account"><br>密码:<input type="password" name="password"><br><input type="submit" value="注册"><input type="reset" value="重置你的账号"><a href="login.jsp">点击登录</a>
//这里是后来添加的
</form>
</body>
</html>

页面效果

LoginServlet.Java

package demo;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;@WebServlet(name="/RegisterServlet",urlPatterns= {"/register.do"})
public class RegisterServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username=request.getParameter("account");String password=request.getParameter("password");response.setContentType("text/html;charset=utf-8");PrintWriter out=response.getWriter();out.println("<html><body>");out.println("注册成功");response.setHeader("refresh","1;url=login.jsp");
//      每一秒刷新页面}}

相关重要方法

  • String getParameter(String name):返回由name指定的请求参数值,如果指定的参数值不存在,则返回null值。若指令的参数存在,用户没有提供值则返回空字符串。值得注意的是,我们这里获取的name要和jsp中对应的name要相同才能获取到值进行比较。
  • PrintWriter对象是被Servlet用来动态产生页面。调用响应对象的getWriter()返回PrintWriter类的对象,它可以向客户发送数据
  • setContentType():设置内容类型,本题设置的是HTML文档,响应的编码是:UTF-8

我们在这里设置账号密码都为admin比较好记忆,运行效果如下

个人登录页面

Login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>用户登录页面</title>
</head>
<body>
<h4>用户登录页面</h4>
<form action="LoginServlet" method="post"><%--    action那代写登录后的页面也就是考试系统--%><table><tr><td>用户名:</td><td><input type="text" name="username" size="25"></td></tr><tr><td>密码</td><td><input type="password" name="password" size="25"></td></tr><tr><td>学号</td><td><input type="text" name="学号" size="16"></td></tr><tr><td><input type="submit"name="submit" value="提交"></td><td><input type="reset" name="reset" value="重置"></td></tr></table></form>
</body>
</html>

LoginServlet.java

package demo;
import java.io.*;
import java.net.ResponseCache;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.WebServlet;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username= req.getParameter("username");String password=req.getParameter("password");resp.setContentType("text/html;charset=UTF-8");PrintWriter out=resp.getWriter();out.println("<!DOCTYPE html>");out.println("<html><body>");if(username.equals("admin")&&password.equals("admin")){req.setAttribute("username",username);RequestDispatcher rd=req.getRequestDispatcher("/text.jsp");rd.forward(req,resp);}else {RequestDispatcher rd=req.getRequestDispatcher("/login.jsp");rd.forward(req,resp);}out.println("</body></html>");}
}

功能描述

登录页面如果账号密码都正确则跳转到考试页面进行答题,如果账号密码不正确则会重新回到登录页面。

如果是正确的会跳转到考试页面

如果故意设置账号不正确不正确

账号填写错误的时候的效果

相关重要函数

  • equals(String str)函数用来判断两个字符串的内容是否相同
  • setAttribute(String name,Object obj):将指定名称name的对象obj作为属性值存储到请求对象中
  • getRequestDispatcher():得到RequestDispatcher对象,称为请求转发的对象,这里设置的是对应的页面
  • 值得注意的是jsp中的action的值要和.Java中设置的映射模式的值要相同,才能使得登录的时候达到响应的效果
  • forward(ServeletRequest request,ServlerResponse response):将请求转发到服务器上的另一个动态或静态资源(如servlet,jsp页面或html页面)

考试页面

text.js

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>考试页面</title>
</head>
<body>
<h4>欢迎进入考试界面,祝你考试顺利</h4>
<h1>下面是选择题部分,共五道题,每题20分,总共100分</h1>
1、下面的编程语言不属于面向对象语言的是:
<form action="Text" method="post"><input type="radio" name="question1" value="1">C语言<input type="radio" name="question1" value="2">java<input type="radio" name="question1" value="3">c#<input type="radio" name="question1" value="4">python<br></br>2、下面符合面向对象的特点是:<input type="checkbox" name="question2" value="1">封装性<input type="checkbox" name="question2" value="2">多态性<input type="checkbox" name="question2" value="3">继承性<input type="checkbox" name="question2" value="4">抽象<br></br>3、下面哪个学院属于第一学院<input type="radio" name="question3" value="1">电气工程学院<input type="radio" name="question3" value="2">粤瓦说唱学院<input type="radio" name="question3" value="3">夏园感恩学院<input type="radio" name="question3" value="4">英强学院<br></br>4、请写出下列代码的输出值<br></br>public class Xiti1 {<br></br>public static void main(String[] args) {<br></br>long sum=0,t=1;<br></br>long result;<br></br>for(int i=1;i<=10;i++)<br></br>{<br></br>t=t*i;<br></br>sum=sum+t;<br></br>}<br></br>System.out.println(sum);<br></br>}<br></br>}<br></br><input type="text" size="25" name="question4" ><br></br>5、在关系代数运算中,五种基本运算为:<br></br><input type="radio" name="question5" value="1">并、差、交、选择、投影<br></br><input type="radio" name="question5" value="2">并、差、选择、投影、自然连接<br></br><input type="radio" name="question5" value="3">并、差、选择、投影、乘积<br></br><input type="radio" name="question5" value="4">并、差、交、选择、乘积<br></br><input type="submit" value="提交">
</form></body>
</html>

Text.java

package demo;
import java.io.*;
import java.io.IOException;
import java.security.PublicKey;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;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.IconifyAction;
import javax.swing.text.AbstractDocument.LeafElement;import com.mysql.cj.protocol.a.result.ResultsetRowsStatic;import javax.servlet.*;
import java.sql.*;
@WebServlet("/Text")
public class Text extends HttpServlet {private static final long serialVersionUID = 1L;public static void main(String[] args){}public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{HttpSession session=request.getSession(true);response.setContentType("text/htmll+;charset=utf-8");String answer1=request.getParameter("question1");String answer2[]=request.getParameterValues("question2");String answer3=request.getParameter("question3");String answer4=request.getParameter("question4");String answer5=request.getParameter("question5");int score=0;if(answer1!=null&&answer1.equals("1")){score+=20;}if(answer2!=null&&answer2.length==4){score+=20;}if(answer3!=null&&answer3.equals("2")){score+=20;}if(answer4!=null&&answer4.equals("55")){score+=20;}if(answer5!=null&&answer5.equals("3")){score+=20;}PrintWriter out=response.getWriter();out.println("你的总分:"+score);session.setAttribute("score",score);//下一篇博客会用到}
}

思路分析

考试逻辑是这次实验我认为最难写,因为不知道怎么去写当你选择答案正确的时候分数自增。后来经过查阅课本还有上网查询,需要通过getParameter函数去返回name的参数值,然后该字符串的值和我们jsp页面设置的正确答案的value值匹配,如果正确则分数自增。这里的多选题因为设置的是全选,因此只需要判断返回的字符串数组长度是否为4就可以了


需要注意的小细节

  • 用户名的输入尽量不要中文输入,因为这里只是简单了设置了UTF-8,没有将请求对象的字符编码和响应的内容类型设置为UTF-8。填写表单尽量使用英文。
  • IDEA编写javaweb的时候更新了内容需要关掉重来否则,页面的内容不会更新
  • 如果IDEA和eclipse都配置了tomcat服务器,如果同时打开了这两个,需要关掉一个的tomcat否则会造成端口冲突

基于tomcat的javaweb在线教学网站的开发--完成登录、注册以及考试页面相关推荐

  1. asp毕业设计—— 基于asp+access的课程教学网站设计与实现(毕业论文+程序源码)——教学网站

    基于asp+access的课程教学网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的课程教学网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开 ...

  2. Python+Django基于Python的古诗词在线学习网站#毕业设计

    项目编号:Python+Django205-基于Python的古诗词在线学习网站#毕业设计 开发语言:Python python框架:django 软件版本:python3.7 数据库:mysql 5 ...

  3. 基于SSH架构的在线拍卖系统设计与开发

    摘 要 拍卖是购买和销售中的一种重要的交易方式,随着Internet的日益普及和电子商务的发展,网上拍卖这种电子商务模式将成为主流的一种交易方式.各色各样的电子商务网站层出不穷,其中又以易趣,淘宝类的 ...

  4. 在线问诊、找科室、找医生、查疾病、图文问诊、电话急诊、健康咨询、问诊平台、咨询平台、问诊服务、语音问诊、开药问诊、看病平台、在线医疗、健康平台、登录注册、信息架构图、全局说明、组件规范、需求清单、

    在线问诊.找科室.找医生.查疾病.图文问诊.电话急诊.健康咨询.问诊平台.咨询平台.问诊服务.语音问诊.开药问诊.看病平台.在线医疗.健康平台.登录注册.信息架构图.全局说明.组件规范.需求清单. A ...

  5. 基于jsp+mysql+ssm在线音乐网站-计算机毕业设计

    项目介绍 随着计算机行业和互联网技术的高速发展,以及互联网在日常生活中的飞速普及,网络已经与我们的生活息息相关,密不可分,我们越来越离不开网络,网络在我们每天的生活中占据非常重要的地位.现在,网络上面 ...

  6. 基于PHP的精品课程教学网站

    本精品课程网站主要是为了更好的提高学生的学习质量服务的,本课程网站根据现实生活中的实际情况分为了学生,教师和管理员三种角色,学生主要是在线进行学习和查看教师发布的教学资料等内容,教师主要是对教学的内容 ...

  7. php 精品课程,基于PHP的精品课程教学网站

    本精品课程网站主要是为了更好的提高学生的学习质量服务的,本课程网站根据现实生活中的实际情况分为了学生,教师和管理员三种角色,学生主要是在线进行学习和查看教师发布的教学资料等内容,教师主要是对教学的内容 ...

  8. 基于asp.net的在线音乐网站的设计与实现(完整)

    毕业设计(论文)题目 基于SSM的在线音乐网站的设计与实现 指导教师姓名 曹晶垚 职  称 学生应具备的条件 c#,asp.net具有系统的软件开发理论知识和一定的实践经验,使用HTML,CSS,Ja ...

  9. 基于Vue+Springboot的在线音乐网站

    系统角色: 管理员.普通用户 主要功能包括: 普通用户角色功能(登录注册.音乐收藏.音乐下载.音乐播放.音乐评论.评分.音乐搜索.歌手列表.歌单列表); 管理员角色功能(登录.添加新用户.更新用户头像 ...

最新文章

  1. 接口测试用例测试模板
  2. python csv性能_性能:Python pandas DataFrame.to_csv附加逐渐变慢
  3. SAP/SD - 做SD你要知道的透明表
  4. python求超级素数代码_[宜配屋]听图阁
  5. 使用 XMLBeans 进行编程 XMLBeans 如何引发数据绑定的巨大变革
  6. 在我的网站上开通了WebPart演示和下载列表。
  7. hprof文件中导出图片
  8. Canvas入门06-线段与像素边界
  9. javascript语法速查表
  10. java holder_java.sql.SQLException: connection holder is null
  11. 使html表格可编辑状态,js+Html实现表格可编辑操作
  12. myeclipse9 maven web 环境
  13. UNIX系统编程小结(三)----进程相关
  14. python输出重定向_使用Python子进程重定向标准输出到标准输入...
  15. Java 十大常用框架
  16. 简单线性回归的应用及画图(一)
  17. c语言用串口读温度值,温度传感器与串口
  18. 描写计算机硬件的英语作文,介绍关于电脑的英语作文
  19. iwanna 关卡设计(挖坑)指南
  20. 电机驱动电路中的Snubber网络设计

热门文章

  1. FrameGraph Extensible Rendering Architecture in Frostbite
  2. C语言程序设计习题参考答案
  3. 软件项目管理MOOC(北邮)——第一章测试答案
  4. 第四十九回 七星坛诸葛祭风  三江口周瑜纵火
  5. 高清壁纸wallhaven.cc下载图片
  6. 中国信号调理器行业市场供需与战略研究报告
  7. 笔记:中国大学MOOC课程《程序设计入门——C语言》编程练习
  8. 一些好用的 alias 命令
  9. synergy使用方法和安装包
  10. 滚动条兼容火狐浏览器