package com.dongruan.studentmanage.controller;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dongruan.studentmanage.common.ReginCode;
import com.dongruan.studentmanage.pojo.Student;
import com.dongruan.studentmanage.service.StudentService;
import com.dongruan.studentmanage.serviceimpl.StudentServiceImpl;
/**
* Servlet implementation class StudentServlet
*/
public class StudentServlet extends HttpServlet {
/**
* 1、pojo层:javabean (实体类 一般 我们的实体类 属性 对应一张表的 字段 )
* 2、dao层:数据库层 专门用来写 对应表与实体类关系的 增删改查(会使用pojo层)
* 3、service层:业务逻辑层(会调用dao层)
* 4、controller层:控制层 (控制层调用 service层)
* 5、学习 Ajax技术:
* AJax技术:异步请求处理 页面局部刷新时使用
6、ajax应用场景举例:注册页面,在进行注册的时候 如果 写入的用户名 数据库中 已经存在 则 alert对话框 通知用户该用户名已经存在并且清空用户名输入框让其重新输入
7.页面跳转的两种方式:
1.response.sendRedirect("service/xxx.jsp")
两次请求 两次响应
2.request.getRequestDispatcher("service/xxx.jsp").forward(request, response);
第二种 跳转页面的形式 并没有 实现跳转 只不过是 将该次请求 进行了一次 传递,传递给了我们的jsp
一次请求 一次响应
8.总结 客户端向servlet传递参数的形式 有:
get请求传递参数使用问号传值 ? &
post请求 传递参数 form表单submit提交
9.servlet向页面 (客户端如何传递参数?): request.setAttribute("参数名",参数值value);并且注意一点 带有参数传递的这种 页面跳转
一定要使用request.getRequestDispatcher().forward();
10.jsp的el表达式:
1)参数名 展示(参数为简单的类型 例如八大基本表达式)
2)servlet想页面传递参数类型为对象的时候 表达式
11.阿帕奇组织下研究出的jstl标签 备受大家欢迎
1)需要加入两个 jar jstljar standard.jar
2)需要使用jstl标签的页面上方需加入 c标签头
*/
/*实现功能:1.首先打开登录页面 登录成功后 跳转到 一个 学生列表页面(要走servlet获取所有学生信息后 传值给 学生列表页面 studentlist.jsp 展示出所有学生)(所以要首先把学生表中字段 对应做成一个 HTML页面)
*实现 大致流程:service层添加方法 listAllStudent 方法入参无 方法出参 ArrayList<Student>
* dao层添加 查询所有学生 功能 方法入参无 方法出参 ArrayList<Student>
*
* 2、在学生列表页面,增加一列删除操作栏 没 行数据后方多一个删除href链接按钮 点击该按钮实现删除一条数据后 重新刷新返回该页面(能力好的同学试试ajax进行实现)
* 3.批量删除功能:在学生列表页面 前面增加一栏 checkbox框 列表左上角 有一个全选checkbox 要求 勾选全选或者全部选 实现 批量选中或者不选中 学生信息
右上角 增加一个 批量删除按钮 勾选多个学生后 可以点击 批量删除按钮进行 批量删除
4.修改学生信息:在删除列后方加入一列修改操作栏 点击 对应行的修改 连接跳转到 该行学生信息页面(这个页面可以用注册页面简单改一下),展示出该学生所有字段信息内容后
可以对其进行修改 修改完成后 点击 修改按钮完成修改跳转回到学生列表页面
5.分页:在列表页面下方添加 1,2,3 三个 下角标 在下角标 旁边 添加一个 每页多少条的下框选项 下拉框中 给出 5,10,20的选项
实现 分页 建议 使用get请求 这个地方 一定要使用到JavaScript或者 jquery 先进行前端获取值 然后window.location.href进行get请求
*/
private StudentService studentService=new StudentServiceImpl();
/**
* Default constructor.
*/
public StudentServlet() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//通过JavaScript版的ajax get请求到这里 对用户名 是否存在进行一把校验
System.out.println("我是get请求");
/*Student student=studentService.loadUser(request.getParameter("u1"));
if(student==null){
response.getWriter().write("meiren");
}else{
response.getWriter().write("youren");
}*/
/*String idstr=request.getParameter("s");
System.out.println(idstr+"&&&");
studentService.deleteSomeByIdstr(idstr);
//studentService.deleteStudentById(studentid);
request.setAttribute("studentlist", studentService.queryAll());
request.getRequestDispatcher("service/studentlist.jsp").forward(request, response);*/
//列表页面点击 修改按钮跳转到doget请求 方法中
String studentid=request.getParameter("studentid");
request.setAttribute("student",studentService.queryById(studentid));
request.getRequestDispatcher("service/update.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/**
* 1、获取页面传递过来的参数 获取参数后还要 定义一个student并把页面参数 赋值给当前student对象
* 2、调用service层的注册方法
*/
//开始添加flag变量参数用来判断 是从什么地方过来的请求要进行怎样的业务逻辑处理工作
String flag=request.getParameter("flag");
if("login".equals(flag)){
String result=studentService.login(request.getParameter("username"),request.getParameter("password"));
if(ReginCode.SUCCESS.equals(result)){
request.setAttribute("studentlist",studentService.queryAll() );
request.getRequestDispatcher("service/studentlist.jsp").forward(request, response);
}else{
response.sendRedirect("service/login.jsp");
}
}else if("update".equals(flag)){
Student student=new Student();
student.setCity(request.getParameter("city"));
student.setSex(request.getParameter("sex"));
student.setIntroduction(request.getParameter("introduction"));
student.setPassword(request.getParameter("password"));
student.setUsername(request.getParameter("username"));
student.setStudentid(Integer.parseInt(request.getParameter("studentid")));
studentService.updateStudent(student);
request.setAttribute("studentlist",studentService.queryAll() );
request.getRequestDispatcher("service/studentlist.jsp").forward(request, response);
}
//Student s=new Student();
//s.setUsername(request.getParameter("username"));
//s.setPassword(request.getParameter("password"));
//s.setSex(request.getParameter("sex"));
//studentService.register(s);
/*ArrayList<Student> slist=new ArrayList<Student>();
for(int i=0;i<10;i++) {
Student s=new Student();
s.setCity("广东省");
s.setSex((i%2)+"");
s.setUsername(i+"");
s.setPassword(i+"p");
slist.add(s);
}
request.setAttribute("studentlist", slist);
request.getRequestDispatcher("service/login.jsp").forward(request, response);*/
//response.sendRedirect("service/login.jsp");
//String result=studentService.login(request.getParameter("username"), request.getParameter("password"));
// if(ReginCode.NONE_PERSON.equals(result)){
// response.getWriter().write("木有这个人");
// }else if(ReginCode.WRONE_PASSWORD.equals(result)){
// response.getWriter().write("密码错误");
// }else{
// response.getWriter().write("登录成功");
// }
// response.getWriter().write(result);
//ajax校验用户名是否重复的 代码区
/*System.out.println("ajax 进入————————");
Student student=studentService.loadUser(request.getParameter("username"));
if(student==null){
response.getWriter().write(ReginCode.NONE_PERSON);
}else{
response.getWriter().write(ReginCode.USERNAME_EXIST);
}
request.getRequestDispatcher("service/xxx.jsp").forw
StudentManager(1).rar_学生管理
版权申诉
155 浏览量
2022-09-24
08:42:48
上传
评论
收藏 1.61MB RAR 举报
weixin_42653672
- 粉丝: 93
- 资源: 1万+
最新资源
- 以简单、易用、高性能为目标、开源的时序数据库,支持Linux及Windows, Time Series Database.zip
- python-leetcode面试题解之第198题打家劫舍-题解.zip
- python-leetcode面试题解之第191题位1的个数-题解.zip
- python-leetcode面试题解之第186题反转字符串中的单词II-题解.zip
- 一个基于python的web后端高性能开发框架,下载可用
- python-leetcode面试题解之第179题最大数-题解.zip
- python-leetcode面试题解之第170题两数之和III数据结构设计-题解.zip
- python-leetcode面试题解之第168题Excel表列名称-题解.zip
- python-leetcode面试题解之第167题两数之和II输入有序数组-题解.zip
- python-leetcode面试题解之第166题分数到小数-题解.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈