全网最全_jsp项目(跟着宝哥学java:jsp)通过jsp和servlet实现老师登录 学生增删改查

1 初次jsp项目

1.1 和servlet项目完全相同

  • 创建项目:导入jar 修改编码集 分包

  • 实体类 工具类

  • dao

  • servlet:::只保留处理业务的servlet

  • 删除拼凑页面的所有代码

1.2 创建登录页面:teacher/login.jsp

  • 只是一个登录表单
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录页面</title>
<link type="text/css" rel="stylesheet" href="<%=application.getContextPath()%>/css/app.css"/>
</head>
<body>
   
     <form method="post" action="<%=application.getContextPath()%>/teacher/login.do">
          <table id="tab_login">
                <tr>
                   <th>老师名字:</th>
                   <td><input type="text" name="tname" value="张三丰"/></td>
                </tr>
                 <tr>
                   <th>老师密码:</th>
                   <td><input type="text" name="tpwd" value="123456"/></td>
                </tr>
                 <tr>
                    <th colspan="2"><input type="reset"  value="重填"/> | <input type="submit"  value="登录"/></th>
                </tr>
          </table>
     </form>
</body>
</html>

1.3 修改登录的servlet teacher/login.do

package com.zhiyou100.servlet;

import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zhiyou100.dao.TeacherDao;
import com.zhiyou100.entity.Teacher;

public class TeacherLogin extends HttpServlet {
	/*
	     java43:天道酬勤 不忘初衷!
	               宝哥:2022年10月26日 上午9:41:25
	*/
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		  //获取请求参数
		  req.setCharacterEncoding("UTF-8");
		  String tname=req.getParameter("tname");
		  String tpwd=req.getParameter("tpwd");
		  //访问数据库
		  TeacherDao teacherDao=new TeacherDao();
		  Teacher dbTeacher=teacherDao.getOneByTname(tname);
		  //判断登录是否成功
		  String message=null;//定义引用记录错误信息
		  if(dbTeacher==null){
			  //账号错误
			  message="用户名("+tname+")错误!";
		  }else if(!dbTeacher.getTpwd().equals(tpwd)){
			  //密码错误
			  message="密码错误!";
		  }
		  if(message!=null){
			  //登录失败 回到登录页面
			  //一般情况下:jsp到jsp 请求包含::两个资源共同拼凑页面
			  // servlet到jsp::请求转发/重定向
			  //  请求转发是一次请求 可以使用request域对象
			  //  重定向是两次请求  不能使用request域对象
			  
			  //设置域属性
			  req.setAttribute("message", message);
			  req.getRequestDispatcher("/jsp/teacher/login.jsp").forward(req, resp);
			  return;
			  
		  }
		  //登录成功:跳转到学生管理页面 来展示所有学生的信息
		  //对登陆者的信息进行保存:使用session域
		  req.getSession().setAttribute("teacher", dbTeacher);
		  resp.sendRedirect("/java43_project_jsp_01/jsp/student/manager.jsp");
	}
    ...
}
  • 再在登录页面teacher/login.jsp添加显示登录错误信息的显示
<!-- 判断请求域属性message是否有值 有值就显示 -->
<%
String message=(String)request.getAttribute("message");
if(message!=null){
    out.println("<h3>"+message+"</h3>");
}
%>

1.4 学生信息管理页面:student/manager.jsp

<%@page import="org.apache.jasper.tagplugins.jstl.core.ForEach"%>
<%@page import="com.zhiyou100.entity.Student"%>
<%@page import="java.util.List"%>
<%@page import="com.zhiyou100.entity.Teacher"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link type="text/css" rel="stylesheet" href="<%=application.getContextPath()%>/css/app.css"/>
<style type="text/css">
#tab_student_list{
	width:1100px;
	margin:10px auto;
}
</style>
<title>学生管理页面</title>
</head>
<body>
        <!-- 从session中获取当前登录者的信息 -->
        <h3 style="color:blue;">当前登陆者:<%=((Teacher)session.getAttribute("teacher")).getTname()%> | 
                                
        </h3>
        <!-- 判断请求域属性message是否有值 有值就显示 -->
	     <%
	       String message=(String)request.getAttribute("message");
	       if(message!=null){
	    	   out.println("<h3>"+message+"</h3>");
	       }
	     %>
        <!-- 显示所有学生的信息 -->
        <!-- 请求转发到获取所有学生信息的servlet -->
        <%
           //通过判断request域对象中是否有studentList域属性 来判断是否要跳转到student/getAll.do
           if(request.getAttribute("studentList")==null){
        	     request.getRequestDispatcher("/student/getAll.do").forward(request, response);
        	     return;
           }
           
           List<Student> list=(List<Student>)request.getAttribute("studentList");
        %>
        <table id="tab_student_list">
              <tr><th>学号</th><th>名字</th><th>性别</th><th>分数</th><th>生日</th><th>政治</th><th>操作</th></tr>
              <%
                 String path=application.getContextPath();
                 for(Student stu:list){
                	 out.print("<tr><td>"+stu.getSid()+"</td><td>"+
                                          stu.getSname()+"</td><td>"+
                			              stu.getSex()+"</td><td>"+
                			              stu.getScore()+"</td><td>"+
                                          stu.getSbirth()+"</td><td>"+
                			              stu.getSdy()+"</td><td><a href='"+path+"/jsp/student/updateOne.jsp?sid="+stu.getSid()+"'>修改</a> | <a href='"+path+"/student/delete.do?sid="+stu.getSid()+"'>删除</a></td></tr>");
                 }
              %>
              <tr><th colspan="7"><a href="<%=path%>/jsp/student/addOne.jsp">添加学生</a></th></tr>
        </table>
        
</body>
</html>

1.5 获取所有学生信息的servlet:student/getAll.do

package com.zhiyou100.servlet;

import java.io.IOException;
import java.util.List;

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

import com.zhiyou100.dao.StudentDao;
import com.zhiyou100.entity.Student;

public class StudentGetAll extends HttpServlet {
	/*
	     java43:天道酬勤 不忘初衷!
	               宝哥:2022年10月31日 上午10:35:20
	*/

	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//获取所有学生的信息
		List<Student> list=new StudentDao().getAll();
		//设置requesdt域属性
		req.setAttribute("studentList", list);
		//跳转到manager.jsp
		req.getRequestDispatcher("/jsp/student/manager.jsp").forward(req, resp);
		
	}
    ...
}

1.6 修改删除学生的servlet: student/delete.do

package com.zhiyou100.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zhiyou100.dao.StudentDao;

public class StudentDelete extends HttpServlet {
	/*
	     java43:天道酬勤 不忘初衷!
	               宝哥:2022年10月26日 上午10:45:13
	*/

	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//获取请求参数
		int sid=Integer.parseInt(req.getParameter("sid"));
		//通过dao删除
		new StudentDao().deleteOne(sid);
		 //删除成功 设置域属性 并再次回到管理页面
		req.setAttribute("message", "删除("+sid+")成功!");
		req.getRequestDispatcher("/jsp/student/manager.jsp").forward(req, resp);
	}
    ...
}

1.7 创建修改学生的jsp:student/updateOne.jsp

<%@page import="com.zhiyou100.util.DateStrUtil"%>
<%@page import="com.zhiyou100.entity.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link type="text/css" rel="stylesheet" href="<%=application.getContextPath()%>/css/app.css"/>
<title>学生修改页面</title>
</head>
<body>
        <!-- 显示当前学生的信息的表单 -->
        <!-- 请求转发到获取一个学生信息的servlet -->
        <%
           //通过判断request域对象中是否有studentList域属性 来判断是否要跳转到student/getAll.do
           if(request.getAttribute("student")==null){
        	     request.getRequestDispatcher("/student/getOne.do").forward(request, response);
        	     return;
           }
           
           Student student=(Student)request.getAttribute("student");
        %>
     <form method="post" action="<%=application.getContextPath()%>/student/update.do">
          <input type="hidden" name="sid" value="<%=student.getSid()%>"/>
          <table id="tab_student_update">
                <tr>
                   <th>学生名字:</th>
                   <td><input type="text" name="sname" value="<%=student.getSname()%>"/></td>
                </tr>
                <tr>
                   <th>学生分数:</th>
                   <td><input type="text" name="score" value="<%=student.getScore()%>"/></td>
                </tr>
                 <tr>
                   <th>学生生日(xxxx年xx月xx日):</th>
                   <td><input type="text" name="sbirth" value="<%=DateStrUtil.date2Str(student.getSbirth())%>"/></td>
                </tr>
                 <tr>
                   <th>学生性别:</th>
                   <td>
                                             男:<input type="radio" name="sex" value="男" 
                     <%
                         if(student.getSex().equals("男")){
                        	 out.print("checked='checked'");
                         }
                     %>/> | 
                                                 女:<input type="radio" name="sex" value="女" 
                     <%
                         if(student.getSex().equals("女")){
                        	 out.print("checked='checked'");
                         }
                     %>/>
                   </td>
                </tr>
                <tr>
                   <th>政治面貌:</th>
                   <td>党员:<input type="radio" name="sdy" value="true" 
                   <%
                         if(student.getSdy()){
                        	 out.print("checked='checked'");
                         }
                     %>/> | 
                                                 群众:<input type="radio" name="sdy" value="false"
                    <%
                         if(!student.getSdy()){
                        	 out.print("checked='checked'");
                         }
                     %>/>
                   </td>
                </tr>
                <tr>
                    <th colspan="2"><input type="reset"  value="重填"/> | <input type="submit"  value="修改"/></th>
                </tr>
          </table>
     </form>
     <p style="width:1200px;text-align: right;margin:10px auto;"><a href="<%=application.getContextPath()%>/jsp/student/manager.jsp">回到管理页面</a></p>
</body>
</html>

1.8 创建获取一个的servlet:student/getOne.do

package com.zhiyou100.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zhiyou100.dao.StudentDao;
import com.zhiyou100.entity.Student;

public class StudentGetOne extends HttpServlet {
	/*
	     java43:天道酬勤 不忘初衷!
	               宝哥:2022年10月26日 上午10:45:13
	*/

	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//获取请求参数
		int sid=Integer.parseInt(req.getParameter("sid"));
		//获取一个
		Student student=new StudentDao().getOneBySid(sid);
		 //删除成功 设置域属性 并再次回到管理页面
		req.setAttribute("student",student);
		req.getRequestDispatcher("/jsp/student/updateOne.jsp").forward(req, resp);
	}
    ...
}

1.9 修改修改学生的servlet: student/update.do

package com.zhiyou100.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zhiyou100.dao.StudentDao;
import com.zhiyou100.entity.Student;
import com.zhiyou100.util.DateStrUtil;

public class StudentUpdate extends HttpServlet {
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//获取请求参数
		req.setCharacterEncoding("UTF-8");
		Student student=new Student();
		student.setSid(Integer.parseInt(req.getParameter("sid")));
		student.setSname(req.getParameter("sname"));
		student.setScore(Float.parseFloat(req.getParameter("score")));
		student.setSex(req.getParameter("sex"));
		student.setSdy(Boolean.parseBoolean(req.getParameter("sdy")));
		student.setSbirth(DateStrUtil.str2Date(req.getParameter("sbirth")));
		//调用数据库
		new StudentDao().updateOne(student);
		req.setAttribute("message", "修改("+student.getSid()+")成功!");
		req.getRequestDispatcher("/jsp/student/manager.jsp").forward(req, resp);
	}
    ...
}

1.10 创建添加学生的页面:student/addOne.jsp

<%@page import="com.zhiyou100.util.DateStrUtil"%>
<%@page import="com.zhiyou100.entity.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link type="text/css" rel="stylesheet" href="<%=application.getContextPath()%>/css/app.css"/>
<title>学生添加页面</title>
</head>
<body>
        
     <form method="post" action="<%=application.getContextPath()%>/student/add.do">
          <table id="tab_student_add">
                <tr>
                   <th>学生名字:</th>
                   <td><input type="text" name="sname" /></td>
                </tr>
                <tr>
                   <th>学生分数:</th>
                   <td><input type="text" name="score" /></td>
                </tr>
                 <tr>
                   <th>学生生日(xxxx年xx月xx日):</th>
                   <td><input type="text" name="sbirth"/></td>
                </tr>
                 <tr>
                   <th>学生性别:</th>
                   <td>
                                             男:<input type="radio" name="sex" value="男"/> | 
                                                 女:<input type="radio" name="sex" value="女"/>
                   </td>
                </tr>
                <tr>
                   <th>政治面貌:</th>
                   <td>党员:<input type="radio" name="sdy" value="true"/> | 
                                                 群众:<input type="radio" name="sdy" value="false"/>
                   </td>
                </tr>
                <tr>
                    <th colspan="2"><input type="reset"  value="重填"/> | <input type="submit"  value="添加"/></th>
                </tr>
          </table>
     </form>
     <p style="width:1200px;text-align: right;margin:10px auto;"><a href="<%=application.getContextPath()%>/jsp/student/manager.jsp">回到管理页面</a></p>
</body>
</html>

1.11 修改添加学生的servlet: student/add.do

package com.zhiyou100.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zhiyou100.dao.StudentDao;
import com.zhiyou100.entity.Student;
import com.zhiyou100.util.DateStrUtil;

public class StudentAdd extends HttpServlet {
    
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 获取请求参数
		req.setCharacterEncoding("UTF-8");
		Student student = new Student();
		student.setSname(req.getParameter("sname"));
		student.setScore(Float.parseFloat(req.getParameter("score")));
		student.setSex(req.getParameter("sex"));
		student.setSdy(Boolean.parseBoolean(req.getParameter("sdy")));
		student.setSbirth(DateStrUtil.str2Date(req.getParameter("sbirth")));
		// 调用数据库
		new StudentDao().addOne(student);
		 //删除成功 设置域属性 并再次回到管理页面
		req.setAttribute("message", "添加("+student.getSname()+")成功!");
		req.getRequestDispatcher("/jsp/student/manager.jsp").forward(req, resp);
		return;
	}
    ...
}

1.12 登出

  • 管理页面添加登出的链接
<a href="<%=application.getContextPath()%>/teacher/logout.do">登出</a>
  • 添加登出的servert: teacher/logout.do
package com.zhiyou100.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TeacherLogout extends HttpServlet {
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//清楚登录的信息
		req.getSession().invalidate();
		//跳转到登录页面
		req.setAttribute("message", "登出成功!");
		req.getRequestDispatcher("/jsp/teacher/login.jsp").forward(req, resp);
	}
    ...
}

1.13 总结

1: jsp和servlet的分工:jsp用于通过表单获取数据 、数据展示
2: 页面使用url 都要使用相当于当前主机的url  不能使用相当于当前资源
3: css的margin做的不好
4: 单选框和多选框 只要有checked属性 就会被默认选中  不在乎值
5: servlet的流程:获取参数 访问dao 设置域属性 选择跳转
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值