zoukankan      html  css  js  c++  java
  • SpringMVC快速入门记录(一)

    1.SpringMVC入门:表现层框架,spring的一部分


    2.Spring处理流程:

    3.要在web.xml里写好相关配置

        <!--配置DispatcherServlet-->
        <servlet>
            <servlet-name>shuoshuo-dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!--
                配置SpringMVC 需要配置的文件
                spring-dao.xml,spring-service.xml,spring-web.xml
                Mybites -> spring -> springMvc
            -->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:spring/spring-*.xml</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>shuoshuo-dispatcher</servlet-name>
            <!--默认匹配所有请求-->
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
        <!-- 这个是配置编码问题,以防中文出现问题-->
        <filter>
            <filter-name>characterEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>characterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    


    4.在web包里创建XXXController类,如下:

    @Controller
    @RequestMapping("/shuoshuo")
    public class ShuoshuoController {
    
        @Autowired
        private ShuoshuoService shuoshuoService;
    
        @RequestMapping(value = "/list" ,method= RequestMethod.GET)
        public String list(Model model)
        {
            List<Shuoshuo> shuoshuoList = shuoshuoService.queryAllShuoshuo();
            model.addAttribute("list",shuoshuoList);
            return "list";
        }
    
        @RequestMapping(value = "/postShuoshuo" ,method= RequestMethod.POST)
        public ModelAndView postShuoshuo(String name,String text)
        {
            System.out.println(text);
    
            shuoshuoService.insertShuoShuo(name,text);
    
            List<Shuoshuo> shuoshuoList = shuoshuoService.queryAllShuoshuo();
    
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.setViewName("redirect:list");
            modelAndView.addObject("list",shuoshuoList);
            return modelAndView;
        }
    
    }

    5.如上,类上打上@Controller 。@RequestMapping("/shuoshuo")表示访问路径,这个类下的访问路径都是加shuoshuo


    6.方法上的@RequestMapping("/list"),那么此时路径应该是localhost:8080/项目名/shuoshuo/list访问到这个方法


    7.springmvc里数据和jsp页面是用Model和View搞定的


    model.addAttribute("list",shuoshuoList);//设置数据
    modelAndView.setViewName("redirect:list");//设置重定向jsp页面
    return "list";//跳转到list.jsp


    8.springmvc的方法参数,可以直接在方法参数里写HttpServletRequest,HttpServletResponse,HttpSession,ModelAndView,Model,View(springmvc默认支持的)如下这样:

    /**
     * 根据id查询商品,使用Model
     * 
     * @param request
     * @param model
     * @return
     */
    @RequestMapping("/itemEdit")
    public String queryItemById(HttpServletRequest request, Model model) {
    	// 从request中获取请求参数
    	String strId = request.getParameter("id");
    	Integer id = Integer.valueOf(strId);
    
    	// 根据id查询商品数据
    	Item item = this.itemService.queryItemById(id);
    
    	// 把商品数据放在模型中
    	model.addAttribute("item", item);
    
    	return "itemEdit";
    }
    

    9.第8点讲的是几个默认的方法参数类,还可以绑定简单的数据类型(

    整形:Integer、int

    字符串:String

    单精度:Float、float

    双精度:Double、double

    布尔型:Boolean、boolean

    ),如下:

    请求url:

    http://localhost:8080/xxx.action?id=2&status=false  //表单也和这个同理一样

     

    处理器方法:

    publicString editItem(Model model,Integer id,Boolean status) //名字一样即可


    10.绑定普通VO或复合VO类(常见于表单)

    VO代码:

    class ContactInfo {
        private String tel;
        private String address;
    
        public String getTel() {
            return tel;
        }
    
        public void setTel(String tel) {
            this.tel = tel;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
    }
    
    public class User {
        private String firstName;
        private String lastName;
        private ContactInfo contactInfo;
    
        public String getFirstName() {
            return firstName;
        }
    
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
        public ContactInfo getContactInfo() {
            return contactInfo;
        }
    
        public void setContactInfo(ContactInfo contactInfo) {
            this.contactInfo = contactInfo;
        }
    
    }
    


    Controller代码:

    @RequestMapping("saysth.do")
    public void test(User user) {
        System.out.println(user.getFirstName());
        System.out.println(user.getLastName());
        System.out.println(user.getContactInfo().getTel());
        System.out.println(user.getContactInfo().getAddress());
    }

    表单代码:

    <form action="saysth.do" method="post">
    <input name="firstName" value="张" /><br>
    <input name="lastName" value="三" /><br>
    <input name="contactInfo.tel" value="13809908909" /><br>
    <input name="contactInfo.address" value="北京海淀" /><br>
    <input type="submit" value="Save" />
    </form>


    非常简单 ,类里普通数据 只需将对象的属性名和input的name值一一匹配即可

    复合类需要使用“复合类名(对象类型的属性).复合类属性名”来命名input的name。


    11.自定义参数绑定(比如把JSP页面里的字符串日期转为 日期类,使用Converter接口,略)


    12.绑定简单类型。@RequestParam

    使用@RequestParam常用于处理简单类型的绑定。


    value:参数名字,即入参的请求参数名字,如value=“itemId”表示请求的参数     区中的名字为itemId的参数的值将传入
     
    required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报错
    TTP Status 400 -Required Integer parameter 'XXXX' is not present
     
    defaultValue:默认值,表示如果请求中没有同名参数时的默认值
     
    定义如下:

    @RequestMapping("/itemEdit")
    public String queryItemById(@RequestParam(value = "itemId", required = true, defaultValue = "1") Integer id,
           ModelMapmodelMap) {
        // 根据id查询商品数据
        Itemitem = this.itemService.queryItemById(id);
        // 把商品数据放在模型中
        modelMap.addAttribute("item", item);
        return "itemEdit";
    }


  • 相关阅读:
    系统升级到9.10感觉很不错
    mysql数据库文件坏掉后通过二进值日志恢复
    关于杨宪益传
    Linux下设置屏幕亮度
    XFCE升级到4.10
    在Linux下编译安装php
    Ubuntu unity安装IndicatorMultiload
    解析Visual Studio Unit Test Result文件(trx文件)
    Linux下安装wordpress3.4
    XFCE字体发虚的解决方法
  • 原文地址:https://www.cnblogs.com/chz-blogs/p/9381009.html
Copyright © 2011-2022 走看看