首页 > 技术文章 > springMVC学习笔记二

bluewelkin 2014-09-27 17:37 原文

六、springmvc的注解

xml的配置→注解

1、新建一个配置文件还是在config下

新建springAnnotation-servlet.xml

web.xml 修改初始化为<param-value>classpath*:config/springAnnotation-servlet.xml</param-value>

springAnnotation-servlet.xml 加入一个扫描包。扫描包下的所有类

<context:component-scan base-package="com.tgb.web.controller.annotation"></context:component-scan>

继续添加。上面为注解扫描包,下面为开启注解。

spring webmvc下的目录mvc下的annotation下的两个类。注解

<!-- 根据url去匹配类,类去匹配方法 -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
    

2、 src下的java类

package com.tgb.web.controller.annotation;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class UserController {
    @RequestMapping(value="/user/addUser",method=RequestMethod.GET)    
    public ModelAndView addUser(){
        String result="this is the addUser function";
        return new ModelAndView("/jquery","result",result);
    }
    @RequestMapping(value="/user/delUser",method=RequestMethod.GET)
    public ModelAndView delUser(){
        String result ="this is delUser------";
        return new ModelAndView("/jquery","result",result);
    }
    @RequestMapping(value="/user/toUser",method=RequestMethod.GET)
    public ModelAndView toUser(){
        return new ModelAndView("/jquery");
    }
}

3、jquery里的表单里面的get方法要对应上面的method=RequestMethod.GET 。如果表单修改为post请求,就会请求不到资源。

http://localhost:8080/springMVC1/user/toUser toUser→jquery界面→点击按钮→表单到/springMVC1/user/addUser 这个界面,返回出一行字符串

七、sprigmvc注解优化

1、配置优化 

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>

修改为 

    <!-- 开启注解 -->
    
    <mvc:annotation-driven/>

2、请求类型优化

修改成@RequestMapping(value="/user2")

3、继续优化

修改成@RequestMapping("/user2")

4、修改ModeAndView。把ModeAndView修改成String

5、传递参数

方法修改为public String addUser(HttpServletRequest request)

request.setAttribute("result", result); 这样传递数据

八、springmvc参数传递

1、新建一个DataController

package com.tgb.web.controller.annotation;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/user/data")
public class DataController {
    
    @RequestMapping("/addUser")
    public String addUser(String userName,String age,HttpServletRequest request){
        
        String result ="this is addUser------优化版";
        request.setAttribute("userName", userName);
        request.setAttribute("age", age);
        
        return "/userManager";
    }
    
    @RequestMapping("/delUser")
    public String delUser(HttpServletRequest request){
        String result ="this is delUser------优化版";
        request.setAttribute("result", result);
        return "/jquery";
    }
    @RequestMapping("/toUser")
    public String toUser(HttpServletRequest request){
        return "/addUser";
    }
}

 见源码。

有了以前的注解开启。

http://localhost:8080/springMVC1/user/data/toUser →返回到一个addUser.jsp界面,然后表单到controller里面 保存数据,传递数据到userManager.jsp

3、表单中姓名乱码。

 addUser.jsp里面为charset=UTF-8编码。

提交到服务器,修改tomcat的config下的

 <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

修改为

    <Connector URIEcoding="UTF-8" port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

 GET方法请求,然后修改tomct里面的编码也为UTF-8.所以姓名也不会乱码了

POST方法,依然乱码

4、在web.xml修改一下拦截

 添加如下【其中filter就是spring web jar包下的web下的filter下的CharacterEncodingFilter】

     <filter>
        <filter-name>encodingFilter</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>
    <!-- encoding filter for jsp page -->
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  

 

推荐阅读