在jsp页面用request.setAttribute()在action用request.getAttribute()接收得到为null的问题的解决方法

今天作毕业设计的时候遇到了在jsp页面用request.setAttribute()后

                      在action用request.getAttribute()接收得到为null的问题

--------------------------------------------------------------------------------------------------------

在jsp用 <%request.setAttribute("deleteMethod","1")%>
在action里用request.getAttribute("deleteMethod")取出来是null,

 

但是action 里面用request.setAttribute()

jsp 页面用request.getAttribute() 没有任何问题,

对于redirect的问题 我看了 默认是redirect=false; 所以不是重定向 ,至少表面上的逻辑不是。具体原因我暂时也不太清楚。

 

 

解决办法是:

*********************************************************** 


 在jsp页面用 <input type="hidden" name="deleteMethod" value="1"/>
在action用request.getParameter("deleteMethod");
解决了这个问题。

 

以前我担心用了hidden 需要在actionForm 里面加该字段做属性,今天试了,不用,它可以直接接收。具体原因看来还是有必要把actionForm再了解一下。

不过以后就不怎么担心会遇到这么一个问题了。

希望有用的人,留个言,让我知道也有人遇到这么个问题。

大家一起学习哦。

package com.niit.servlet; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.niit.mapper.CourseMapper; import com.niit.mapper.StudentCourseMapper; import com.niit.mapper.StudentMapper; import com.niit.util.MyBatisUtil; import org.apache.ibatis.session.SqlSession; import com.niit.pojo.Course; import com.niit.pojo.PageBean; import com.niit.pojo.Student; import com.niit.pojo.StudentCourse; import com.niit.pojo.User; import com.niit.util.PageUtil; import com.niit.util.ResponseUtil; import com.niit.util.StringUtil; import net.sf.json.JSONObject; /** * 学生Servlet类 * @author Administrator * */ public class StudentServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; private SqlSession sqlSession; private StudentMapper studentMapper; private StudentCourseMapper studentCourseMapper; private CourseMapper courseMapper; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); String action = request.getParameter("action"); if ("list".equals(action)) { this.list(request, response); } else if ("preSave".equals(action)) { this.preSave(request, response); } else if ("save".equals(action)) { this.save(request, response); } else if ("delete".equals(action)) { this.delete(request, response); } else if ("courseList".equals(action)) { this.courseList(request, response); } else if ("showInfo".equals(action)) { this.showInfo(request, response); } else if ("showScore".equals(action)) { this.showScore(request, response); } else if ("preSelect".equals(action)) { this.preSelect(request, response); } else if ("selectCourse".equals(action)) { this.selectCourse(request, response); } else if ("unSelectCourse".equals(action)) { this.unSelectCourse(request, response); } } /** * 显示列表 * @param request * @param response * @throws ServletException * @throws IOException */ private void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); String page = request.getParameter("page"); String s_userName = request.getParameter("s_userName"); Student s_student = new Student(); if (StringUtil.isEmpty(page)) { page = "1"; s_student.setUserName(s_userName); // 修正此处的拼写错误 session.setAttribute("s_student", s_student); } else { s_student = (Student) session.getAttribute("s_student"); } PageBean pageBean = new PageBean(Integer.parseInt(page), 3); try { // 获取新的SqlSession实例 SqlSession sqlSession = MyBatisUtil.getSqlSession(); StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class); List<Student> studentList = studentMapper.studentList(pageBean, s_student); int total = studentMapper.studentCount(s_student); String pageCode = PageUtil.getPagation(request.getContextPath() + "/student?action=list", total, Integer.parseInt(page), 3); request.setAttribute("pageCode", pageCode); request.setAttribute("modeName", "学生信息列表"); request.setAttribute("studentList", studentList); request.setAttribute("mainPage", "student/list.jsp"); request.getRequestDispatcher("main.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); } finally { try { if (sqlSession != null) { sqlSession.close(); } } catch (Exception e) { e.printStackTrace(); } } } /** * 保存预处理 * @param request * @param response * @throws ServletException * @throws IOException */ private void preSave(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = request.getParameter("id"); SqlSession sqlSession = null; try { sqlSession = MyBatisUtil.getSqlSession(); StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class); if (StringUtil.isNotEmpty(id)) { request.setAttribute("actionName", "学生信息修改"); Student student = studentMapper.loadStudentById(id); request.setAttribute("student", student); } else { request.setAttribute("actionName", "学生信息添加"); } request.setAttribute("mainPage", "student/save.jsp"); request.setAttribute("modeName", "学生信息列表"); request.getRequestDispatcher("main.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); request.setAttribute("errorMsg", "加载数据失败: " + e.getMessage()); request.getRequestDispatcher("main.jsp").forward(request, response); } finally { if (sqlSession != null) { sqlSession.close(); } } } /** * 保存修改或添加操作 * @param request * @param response * @throws ServletException * @throws IOException */ private void save(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = request.getParameter("id"); String userName = request.getParameter("userName"); String password = request.getParameter("password"); String trueName = request.getParameter("trueName"); String stuNo = request.getParameter("stuNo"); String professional = request.getParameter("professional"); Student student = new Student(userName, password, trueName, stuNo, professional); SqlSession sqlSession = null; try { sqlSession = MyBatisUtil.getSqlSession(); StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class); if (StringUtil.isNotEmpty(id)) { // 修改 student.setId(Integer.parseInt(id)); studentMapper.studentUpdate(student); } else { studentMapper.studentAdd(student); } sqlSession.commit(); response.sendRedirect("student?action=list"); } catch (Exception e) { if (sqlSession != null) { sqlSession.rollback(); } e.printStackTrace(); } finally { if (sqlSession != null) { sqlSession.close(); } } } /** * 删除学生 * @param request * @param response * @throws ServletException * @throws IOException */ private void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = request.getParameter("id"); SqlSession sqlSession = null; try { sqlSession = MyBatisUtil.getSqlSession(); StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class); StudentCourseMapper studentCourseMapper = sqlSession.getMapper(StudentCourseMapper.class); // 检查学生是否有成绩记录 if (studentCourseMapper.hasScoreByStudentId(Integer.parseInt(id))) { JSONObject result = new JSONObject(); result.put("success", false); result.put("errorMsg", "该学生存在成绩记录,无法删除"); try { ResponseUtil.write(result, response); } catch (IOException e) { e.printStackTrace(); } return; } // 先删除关联的选课记录 studentCourseMapper.deleteEnrollmentByStudentId(Integer.parseInt(id)); // 再删除学生信息 studentMapper.studentDelete(Integer.parseInt(id)); sqlSession.commit(); JSONObject result = new JSONObject(); result.put("success", true); try { ResponseUtil.write(result, response); } catch (IOException e) { e.printStackTrace(); } } catch (Exception e) { if (sqlSession != null) { sqlSession.rollback(); } e.printStackTrace(); JSONObject result = new JSONObject(); result.put("success", false); result.put("errorMsg", e.getMessage()); try { ResponseUtil.write(result, response); } catch (IOException e2) { e2.printStackTrace(); } catch (Exception ex) { throw new RuntimeException(ex); } } finally { if (sqlSession != null) { sqlSession.close(); } } } /** * 显示当前选课 * @param request * @param response * @throws ServletException * @throws IOException */ private void courseList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); User currentUser = (User) session.getAttribute("currentUser"); try { SqlSession sqlSession = MyBatisUtil.getSqlSession(); CourseMapper courseMapper = sqlSession.getMapper(CourseMapper.class); // 查询所有可选课程而非仅已选课程 Course s_course = new Course(); List<Course> courseList = courseMapper.courseList(null, s_course); request.setAttribute("courseList", courseList); request.setAttribute("mainPage", "student/courseList.jsp"); request.setAttribute("modeName", "查看选课列表"); request.getRequestDispatcher("main.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); } finally { sqlSession.close(); } } /** * 查看个人信息 * @param request * @param response * @throws ServletException * @throws IOException */ private void showInfo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); User currentUser = (User) session.getAttribute("currentUser"); try { Student student = studentMapper.loadStudentById(String.valueOf(currentUser.getUserId())); request.setAttribute("student", student); request.setAttribute("modeName", "查看个人信息"); request.setAttribute("mainPage", "student/info.jsp"); request.getRequestDispatcher("main.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); } finally { sqlSession.close(); } } /** * 查看成绩 * @param request * @param response * @throws ServletException * @throws IOException */ private void showScore(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); User currentUser = (User) session.getAttribute("currentUser"); try { List<Course> courseList = studentCourseMapper.getEnrolledCoursesByStudentId(currentUser.getUserId()); request.setAttribute("courseList", courseList); request.setAttribute("modeName", "查看成绩"); request.setAttribute("mainPage", "student/showScore.jsp"); request.getRequestDispatcher("main.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); } finally { sqlSession.close(); } } /** * 选课预处理 * @param request * @param response * @throws ServletException * @throws IOException */ private void preSelect(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); User currentUser = (User) session.getAttribute("currentUser"); try { // 查询所有课程 List<Course> courseList = courseMapper.courseList(null, null); // 查询当前学生已选课程 List<Course> myCourseList = studentCourseMapper.getEnrolledCoursesByStudentId(currentUser.getUserId()); // 查询当前学生已选课程ID List<Integer> myCourseIdList = new ArrayList<Integer>(); for (Course sc : myCourseList) { myCourseIdList.add(sc.getId()); } // 查询可选课程 List<Course> selectCourseList = new ArrayList<Course>(); for (Course c : courseList) { // 通过课程id判断是否已存在当前学生已选课程ID中,如果不存在则添加到可选课程列表中 if (!myCourseIdList.contains(c.getId())) { selectCourseList.add(c); } } request.setAttribute("selectCourseList", selectCourseList); // 可选课程列表 request.setAttribute("myCourseList", myCourseList); // 已选课程列表 request.setAttribute("modeName", "查看可选课程及已选课程"); request.setAttribute("mainPage", "student/selectCourse.jsp"); request.getRequestDispatcher("main.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); } finally { sqlSession.close(); } } /** * 选课 * @param request * @param response * @throws ServletException * @throws IOException */ private void selectCourse(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); User currentUser = (User) session.getAttribute("currentUser"); String courseIds = request.getParameter("courseIds"); // 选中课程ID列表 String cIds[] = courseIds.split(","); try { for (int i = 0; i < cIds.length; i++) { int courseId = Integer.parseInt(cIds[i]); // 检查课程容量 Course course = courseMapper.loadCourseById(String.valueOf(courseId)); if (course.getEnrolled() >= course.getCapacity()) { JSONObject result = new JSONObject(); result.put("success", false); result.put("errorMsg", "课程《" + course.getCourseName() + "》已满,无法选择"); ResponseUtil.write(result, response); return; } // 创建选课记录 StudentCourse sc = new StudentCourse(); sc.setStudentId(currentUser.getUserId()); sc.setCourseId(courseId); studentCourseMapper.createEnrollment(sc); // 更新课程已选人数 course.setEnrolled(course.getEnrolled() + 1); courseMapper.courseUpdate(course); } JSONObject result = new JSONObject(); result.put("success", true); ResponseUtil.write(result, response); } catch (Exception e) { e.printStackTrace(); } finally { sqlSession.close(); } } /** * 退课 * @param request * @param response * @throws ServletException * @throws IOException */ private void unSelectCourse(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String scIds = request.getParameter("scIds"); // 选中课程ID列表 String scIdsStr[] = scIds.split(","); boolean flag = true; try { JSONObject result = new JSONObject(); for (int i = 0; i < scIdsStr.length; i++) { if (studentCourseMapper.hasScoreWithCourseId(Integer.parseInt(scIdsStr[i]))) { flag = false; } else { HttpSession session = request.getSession(); User currentUser = (User) session.getAttribute("currentUser"); studentCourseMapper.deleteEnrollment(currentUser.getUserId(), Integer.parseInt(scIdsStr[i])); } } result.put("success", flag); ResponseUtil.write(result, response); } catch (Exception e) { e.printStackTrace(); } finally { sqlSession.close(); } } }
07-10
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值