基于tomcat的javaweb在线教学网站的开发--完成登录、注册以及考试页面
实验目的
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在线教学网站的开发--完成登录、注册以及考试页面相关推荐
- asp毕业设计—— 基于asp+access的课程教学网站设计与实现(毕业论文+程序源码)——教学网站
基于asp+access的课程教学网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的课程教学网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开 ...
- Python+Django基于Python的古诗词在线学习网站#毕业设计
项目编号:Python+Django205-基于Python的古诗词在线学习网站#毕业设计 开发语言:Python python框架:django 软件版本:python3.7 数据库:mysql 5 ...
- 基于SSH架构的在线拍卖系统设计与开发
摘 要 拍卖是购买和销售中的一种重要的交易方式,随着Internet的日益普及和电子商务的发展,网上拍卖这种电子商务模式将成为主流的一种交易方式.各色各样的电子商务网站层出不穷,其中又以易趣,淘宝类的 ...
- 在线问诊、找科室、找医生、查疾病、图文问诊、电话急诊、健康咨询、问诊平台、咨询平台、问诊服务、语音问诊、开药问诊、看病平台、在线医疗、健康平台、登录注册、信息架构图、全局说明、组件规范、需求清单、
在线问诊.找科室.找医生.查疾病.图文问诊.电话急诊.健康咨询.问诊平台.咨询平台.问诊服务.语音问诊.开药问诊.看病平台.在线医疗.健康平台.登录注册.信息架构图.全局说明.组件规范.需求清单. A ...
- 基于jsp+mysql+ssm在线音乐网站-计算机毕业设计
项目介绍 随着计算机行业和互联网技术的高速发展,以及互联网在日常生活中的飞速普及,网络已经与我们的生活息息相关,密不可分,我们越来越离不开网络,网络在我们每天的生活中占据非常重要的地位.现在,网络上面 ...
- 基于PHP的精品课程教学网站
本精品课程网站主要是为了更好的提高学生的学习质量服务的,本课程网站根据现实生活中的实际情况分为了学生,教师和管理员三种角色,学生主要是在线进行学习和查看教师发布的教学资料等内容,教师主要是对教学的内容 ...
- php 精品课程,基于PHP的精品课程教学网站
本精品课程网站主要是为了更好的提高学生的学习质量服务的,本课程网站根据现实生活中的实际情况分为了学生,教师和管理员三种角色,学生主要是在线进行学习和查看教师发布的教学资料等内容,教师主要是对教学的内容 ...
- 基于asp.net的在线音乐网站的设计与实现(完整)
毕业设计(论文)题目 基于SSM的在线音乐网站的设计与实现 指导教师姓名 曹晶垚 职 称 学生应具备的条件 c#,asp.net具有系统的软件开发理论知识和一定的实践经验,使用HTML,CSS,Ja ...
- 基于Vue+Springboot的在线音乐网站
系统角色: 管理员.普通用户 主要功能包括: 普通用户角色功能(登录注册.音乐收藏.音乐下载.音乐播放.音乐评论.评分.音乐搜索.歌手列表.歌单列表); 管理员角色功能(登录.添加新用户.更新用户头像 ...
最新文章
- 接口测试用例测试模板
- python csv性能_性能:Python pandas DataFrame.to_csv附加逐渐变慢
- SAP/SD - 做SD你要知道的透明表
- python求超级素数代码_[宜配屋]听图阁
- 使用 XMLBeans 进行编程 XMLBeans 如何引发数据绑定的巨大变革
- 在我的网站上开通了WebPart演示和下载列表。
- hprof文件中导出图片
- Canvas入门06-线段与像素边界
- javascript语法速查表
- java holder_java.sql.SQLException: connection holder is null
- 使html表格可编辑状态,js+Html实现表格可编辑操作
- myeclipse9 maven web 环境
- UNIX系统编程小结(三)----进程相关
- python输出重定向_使用Python子进程重定向标准输出到标准输入...
- Java 十大常用框架
- 简单线性回归的应用及画图(一)
- c语言用串口读温度值,温度传感器与串口
- 描写计算机硬件的英语作文,介绍关于电脑的英语作文
- iwanna 关卡设计(挖坑)指南
- 电机驱动电路中的Snubber网络设计