SpringMVC 页面控制器 基础

本文介绍了SpringMVC中页面控制器的基础知识,包括基于配置和注解的两种写法。详细讲解了如何处理请求参数,如@RequestParam注解的使用,以及如何在控制器中操作ModelAndView对象和session。同时,提到了在页面上访问模型数据的方法。
摘要由CSDN通过智能技术生成

创建的类名没有限制,但最好以Controller结尾

基于配置的写法

public class LoginController implements Controller{//实现Controller接口

    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //获取参数
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        //实例化ModelAndView对象
        ModelAndView mAndView = new ModelAndView();
        
        //添加模型数据
        mAndView.addObject("username",username);//等价与request.setAttribute("username",username);
        mAndView.addObject("password",password);
        
        //设置逻辑视图名
        mAndView.setViewName("LoginSuccess");//请求转发
        return mAndView;
    }
}

添加springMVC-servlet.xml配置
    <!-- 配置请求页面控制器映射,表单提交的URL -->
    <bean name="/login" class="com.mitu.controller.LoginController" />

基于注解写法

首先需要配置springMVC-servlet.xml
<!-- 开启springMVC注解驱动 -->
<mvc:annotation-driven/>
<!-- 开启注解扫描器 -->
<context:component-scan base-package="com.mitu.controller(页面控制器所在包)" /> 

@Controller    //声明该类为页面控制器
public class RegisterController {
    //返回值必须为String类型,用于设置返回逻辑视图名,如果返回null默认是@RequestMapping("register1")中URL地址+“.jsp”
    //请求参数绑定 一: @RequestParam("username")String name ,自动将表单中name属性值添加到参数中
    @RequestMapping("register1") //指明URL地址与页面控制器处理方法映射
    public String register1(@RequestParam("username")String username, @RequestParam("password")String password,@RequestParam("email") String email) {
        System.out.println(username);
        System.out.println(password);
        System.out.println(email);
        return "RegisterSuccess";    //设置逻辑视图名、请求转发
    }
    //请求参数绑定 二:String username  参数名必须与请求参数名相同
    @RequestMapping("register2")
    public String register2(String username, String password, String email) {
        System.out.println(username);
        System.out.println(password);
        System.out.println(email);
        return "RegisterSuccess";
    }
    //请求参数绑定 三:UserBean  bean中属性名必须与请求参数名相同
    @RequestMapping("register3")
    public String register3(UserBean user) {
        System.out.println(user);
        return "RegisterSuccess";
    }
}
请求参数绑定后会默认将模型数据储存到request中,页面调用方法 如UserBean:${userBean}第一个字母小写

springMVC封装的session并不好用,可以自己增加方法的参数HttpSession session使用原session
@Controller    //声明该类为页面控制器
//指明将模型数据存放在session中(复制一份request中的数据),需要时才添加注解,默认将模型数据存放在request中
//@SessionAttributes("message") 中message是存储的数据的名称,也可以是参数user
@SessionAttributes("message") 
public class RegisterController {
    @RequestMapping("/jsp/register")
    public String register(UserBean user,ModelMap map,SessionStatus status) {//ModelMap是对request的封装
        System.out.println(user);
        String message = (String)map.get("message");
        if(message==null) {
            map.addAttribute("message", "你好");//等价于request.setAttribute("message", "你好")
        }else {
            map.remove("message");//清除request中的数据
            status.setComplete();//清除session保存的数据
        }
        return "RegisterSuccess";
    }
}
相对的页面调用:
<div>${userBean.username},只读取request中属性:${requestScope.message},只读取session中属性:${sessionScope.message}</div>
<div>${requestScope.userBean}</div>

获取当前页面的绝对路径
<%        //最好放在HTML上方
 String path = request.getContextPath();
 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>    
网页上的所有相对路径在链接时都将在前面加上基链接指向的地址
<base href="<%=basePath %>" />         //放在head标签内

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值