第一类
配置文件:
<!-- 指定自动扫描com.su.controller包下的控制器类 -->
<context:component-scan base-package="com.su.controller"></context:component-scan>
<!-- 自动加载注解适配器和映射器 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置jsp路径的前缀
<property name="prefix" value="/result/" />-->
<!-- 配置jsp路径的后缀
<property name="suffix" value=".jsp" />-->
</bean>
控制器类:包含三种方法
@Controller //此注释代表本类是控制器
//@RequestMapping(name="stu") //相当于action中的namespace,即访问时加的前缀
public class StudentController {
@RequestMapping("addstu.action")
public ModelAndView addStudent() throws Exception{
System.out.println("in StudentController method addStudent()");
ModelAndView mav = new ModelAndView();
mav.addObject("stuName", "大海");
//转发
// mav.setViewName("stusuccess.jsp");
//重定向
mav.setViewName("redirect:stusuccess.jsp");
return mav;
}
@RequestMapping("updatestu.action")
public String updateStudent() throws Exception{
System.out.println("in StudentController method updateStudent()");
//转发
return "stusuccess.jsp";
//重定向
// return "redirect:stusuccess";
}
@RequestMapping("deletestu.action")
public void deleteStudent(HttpServletRequest request,HttpServletResponse response) throws Exception{
System.out.println("in StudentController method deleteStudent()");
request.getSession().setAttribute("stuName", "小倩");
//转发
// request.getRequestDispatcher("stusuccess.jsp").forward(request, response);
//重定向
response.sendRedirect("stusuccess.jsp");
}
}
提交表单访问控制器:
<body>
<form action="addstu.action" method="post">
学生名:<input type="text" name="stuName" value="轩辕"><br>
密码:<input type="password" name="stuPwd" value="1111"><br>
<input type="submit" value="新增">
</form>
</body>
第二类
在控制器类获取通过表单提交属性的值,有三种方式:
1. 直接在方法上传参
@RequestMapping("addstu.action")
public ModelAndView addStudent(String stuName,String stuPwd,String gender,String city,String personInfo,String[] hobby,Double height) throws Exception{
System.out.println("in StudentController method addStudent()");
System.out.println(stuName);
System.out.println(stuPwd);
System.out.println(gender);
System.out.println(city);
System.out.println(personInfo);
for(String s : hobby){
System.out.println(s);
}
System.out.println(height);
ModelAndView mav = new ModelAndView();
mav.addObject("stuName", stuName);
//转发
mav.setViewName("stusuccess.jsp");
//重定向
// mav.setViewName("redirect:stusuccess.jsp");
return mav;
}
2. 在方法上传对象
@RequestMapping("updatestu.action")
public String updateStudent(Student stu,Classes classes,HttpSession session) throws Exception{
System.out.println("in StudentController method updateStudent()");
System.out.println(stu.getStuName());
System.out.println(stu.getCity());
System.out.println(stu.getGender());
System.out.println(stu.getPersonInfo());
System.out.println(stu.getStuPwd());
System.out.println(stu.getHeight());
for(String s : stu.getHobby()){
System.out.println(s);
}
System.out.println(classes.getClassesId());
System.out.println(classes.getClassesName());
session.setAttribute("stu", stu);
//转发
// return "stusuccess.jsp";
//重定向
return "redirect:stusuccess.jsp";
}
3. 在方法上传对象(此对象包含两个子类)
@RequestMapping("deletestu.action")
public void deleteStudent(HttpServletRequest request,HttpServletResponse response,GenericClass gc) throws Exception{
System.out.println("in StudentController method deleteStudent()");
request.getSession().setAttribute("stuName", "小倩");
System.out.println(gc.getStudent().getStuName());
//获取Classes类的属性
System.out.println(gc.getClasses().getClassesId());
//获取Student类中Classes类对象的属性
System.out.println(gc.getStudent().getClasses().getClassesName());
//转发
request.getRequestDispatcher("stusuccess.jsp").forward(request, response);
//重定向
// response.sendRedirect("stusuccess.jsp");
}
4. 前两种方法使用下面的表单,注:属性名上不写对象名
<body>
<form action="updatestu.action" method="post">
学生名:<input type="text" name="stuName" value="轩辕"><br>
密码:<input type="password" name="stuPwd" value="1111"><br>
性别:<input type="radio" name="gender" value="男">男
<input type="radio" name="gender" value="女">女 <br>
所在城市:<select name="city" id="city">
<option value="郑州">郑州</option>
<option value="开封">开封</option>
<option value="洛阳">洛阳</option>
</select><br>
个人说明:<textarea rows="6" cols="40" name="personInfo" id="personInfo"></textarea><br>
爱好:<input type="checkbox" name="hobby" value="电影">电影
<input type="checkbox" name="hobby" value="音乐">音乐
<input type="checkbox" name="hobby" value="吃">吃
<input type="checkbox" name="hobby" value="睡">睡
<input type="checkbox" name="hobby" value="摄影">摄影 <br>
身高:<input type="text" name="height" id="height">cm<br>
所在班级:<select name="classesId" id="classesId">
<option value="1">一班</option>
<option value="2">二班</option>
<option value="3">三班</option>
</select><br>
班级名:<input type="text" name="classesName" >
<input type="submit" value="新增">
</form>
</body>
5. 第三种方法使用下面的表单,注:属性名上写对象名,另外一个类中包含另一类的对象时,要获取此属性的值时,需要为属性写,第一级类.第二级类.属性名
<body>
<form action="deletestu.action" method="post">
学生名:<input type="text" name="student.stuName" value="轩辕"><br>
密码:<input type="password" name="student.stuPwd" value="1111"><br>
性别:<input type="radio" name="student.gender" value="男">男
<input type="radio" name="student.gender" value="女">女 <br>
所在城市:<select name="student.city" id="city">
<option value="郑州">郑州</option>
<option value="开封">开封</option>
<option value="洛阳">洛阳</option>
</select><br>
个人说明:<textarea rows="6" cols="40" name="student.personInfo" id="personInfo"></textarea><br>
爱好:<input type="checkbox" name="student.hobby" value="电影">电影
<input type="checkbox" name="student.hobby" value="音乐">音乐
<input type="checkbox" name="student.hobby" value="吃">吃
<input type="checkbox" name="student.hobby" value="睡">睡
<input type="checkbox" name="student.hobby" value="摄影">摄影 <br>
身高:<input type="text" name="student.height" id="height">cm<br>
所在班级:<select name="classes.classesId" id="classesId">
<option value="1">一班</option>
<option value="2">二班</option>
<option value="3">三班</option>
</select><br>
班级名:<input type="text" name="student.classes.classesName" >
<input type="submit" value="新增">
</form>
</body>
Author:su1573