7.26--SSH学习之SpringMVC控制器注释

第一类

配置文件:

<!-- 指定自动扫描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="男">男&nbsp;
            <input type="radio" name="gender" value="女">女&nbsp;<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="电影">电影&nbsp;
        <input type="checkbox" name="hobby" value="音乐">音乐&nbsp;
        <input type="checkbox" name="hobby" value="吃">吃&nbsp;
        <input type="checkbox" name="hobby" value="睡">睡&nbsp;
        <input type="checkbox" name="hobby" value="摄影">摄影&nbsp;<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="男">男&nbsp;
            <input type="radio" name="student.gender" value="女">女&nbsp;<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="电影">电影&nbsp;
        <input type="checkbox" name="student.hobby" value="音乐">音乐&nbsp;
        <input type="checkbox" name="student.hobby" value="吃">吃&nbsp;
        <input type="checkbox" name="student.hobby" value="睡">睡&nbsp;
        <input type="checkbox" name="student.hobby" value="摄影">摄影&nbsp;<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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是求解多元多项式回归的 MATLAB 代码: ```matlab % 输入数据 x1 = [36.4 37.2 37.2 36.2 31.5 28.9 27.2 26.7 26.1 26.1 25.4 25.3 25.4]'; x2 = [50.0 52.0 49.0 51.0 68.0 74.0 83.0 82.0 88.0 88.0 90.0 88.0 87.0]'; x3 = [982.9 982.2 981.8 981.6 982.3 982.6 983.4 983.5 984.0 983.6 984.4 984.5 984.4]'; y = [-7.30 -7.36 -7.35 -7.33 -7.31 -7.30 -7.26 -7.22 -7.21 -7.23 -7.18 -7.17 -7.14]'; % 构建设计矩阵X X = [ones(size(x1)) x1 x2 x3 x1.^2 x1.*x2 x1.*x3 x2.^2 x2.*x3 x3.^2]; % 求解回归系数 beta = X \ y; % 构建预测模型 model = @(x1,x2,x3) beta(1) + beta(2)*x1 + beta(3)*x2 + beta(4)*x3 ... + beta(5)*x1.^2 + beta(6)*x1.*x2 + beta(7)*x1.*x3 ... + beta(8)*x2.^2 + beta(9)*x2.*x3 + beta(10)*x3.^2; % 预测并绘制拟合图 x1fit = min(x1):0.1:max(x1); x2fit = min(x2):0.1:max(x2); x3fit = min(x3):0.1:max(x3); [X1FIT,X2FIT,X3FIT] = meshgrid(x1fit,x2fit,x3fit); YFIT = model(X1FIT,X2FIT,X3FIT); figure; plot3(x1,x2,x3,'o',x1fit,x2fit,x3fit,'*'); hold on; mesh(X1FIT,X2FIT,X3FIT,YFIT); xlabel('x1'); ylabel('x2'); zlabel('x3'); title('拟合图'); % 绘制残差图 YFIT = model(x1,x2,x3); figure; plot(YFIT - y,'o'); xlabel('样本编号'); ylabel('残差'); title('残差图'); ``` 运行上述代码后,会先绘制拟合图,然后绘制残差图。拟合图中,蓝色的点表示原始数据,红色的点表示拟合值,可以看到拟合值与原始数据比较接近;残差图中,横轴表示样本编号,纵轴表示残差,残差的分布应该比较均匀,没有明显的规律。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ssy03092919

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值