• spring mvc 第一天【注解实现springmvc的基本配置】


    创建pojo,添加标识类的注解@Controller,亦可添加该Handler的命名空间:设置类的@RequestMapping(value="/hr")

    该类中的方法(Handler)的标识使用@RequestMapping来配置 。可以设置该Handler的请求路径,和允许接收请求类型信息等;

    该Handler返回String类型的逻辑视图名称。对应view视图信息。

     1 @Controller
     2 @RequestMapping
     3 public class MyController {
     4     @RequestMapping(value="/first.do",method=RequestMethod.POST)
     5     public String doFirst(UserInfo info,Model model) {
     6         System.out.println("uname"+info.getUname()+"	"+info.getBooklist().get(0).getBookname());
     7         model.addAttribute("uname", info.getUname());
     8         return "index";
     9     }
    10 }

    使用注解配置Handler访问路径的通配符信息。更加便捷的访问Handler:

     1 @RequestMapping(value="/*third.do")// *代表0个或者多个字符,以third结尾就行
     2        public String doThird() {
     3            return "index";
     4        }
     5        
     6    @RequestMapping(value="/fourth*.do")// *代表0个或者多个字符,以fourth开始就行
     7       public String doFourth() {
     8        System.out.println("fourth===============");
     9           return "index";
    10       }
    11    
    12    @RequestMapping(value="/**/fiveth.do")// **在hr和fiveth中间需要多级路径,或者没有路径均可访问
    13       public String doFiveth() {
    14           return "index";
    15       }
    16       
    17   @RequestMapping(value="/*/sixth*.do")// *在hr和sixth中间,必须书写一级路径,而且必须是一级
    18      public String doSixth() {
    19       System.out.println("sixth===============");
    20          return "index";
    21      }

    配置注解一定要在配置文件中开启扫描器。

         <context:component-scan base-package="cn.happy"></context:component-scan>

    配置对应逻辑试图名称的视图解析器。

    这里使用的是InternalResourceViewResolver    (访问站内资源)

    1 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    2         <property name="prefix" value="/WEB-INF/jsp/"></property>
    3         <property name="suffix" value=".jsp"></property>
    4     </bean>

    上面的配置信息显示出在Controller中返回的视图皆为

    /WEB-INF/jsp/*.jsp    其他的则访问不到,该写法有些死板,后面会说到全文通用的配法。

    这里使用的是org.springframework.web.servlet.view.BeanNameViewResolver 配置视图解析器(第二种方案)
    org.springframework.web.servlet.view.RedirectView (支持访问站外资源)
     1 <!-- 视图解析题 -->
     2        <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"></bean>
     3        
     4        <!-- 外部 -->
     5        <bean id="baidu" class="org.springframework.web.servlet.view.RedirectView">
     6            <property name="url" value="http://wwww.baidu.com"></property>
     7        </bean>
     8        
     9       <!-- 内部 -->
    10        <bean id="internal" class="org.springframework.web.servlet.view.JstlView">
    11            <property name="url" value="WEB-INF/jsp/index.jsp"></property>
    12        </bean>
    13         <!-- 外部 -->
    14        <bean id="baidu" class="org.springframework.web.servlet.view.XmlViewResolver">
    15            <property name="location" value="classpath:MyView.xml"></property>
    16        </bean>

    比较复杂的视图解析器的配置:

     1          注册处理映射器
     2       <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     3            <property name="mappings">
     4                <props>
     5                    <prop key="/happy.do">firstController</prop>
     6                </props>
     7            </property>
     8        </bean>
     9        
    10        注册处理映射器
    11        <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    12            <property name="urlMap">
    13                <map>
    14                 <entry key="/hello.do" value="firstController"></entry>
    15             </map>
    16            </property>
    17        </bean>
    18        注册方法名解析器
    19        <bean id="MymethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
    20            <property name="mappings">
    21                <props>
    22                    <prop key="/first.do">doFirst</prop>
    23                    <prop key="/second.do">doSecond</prop>
    24                </props>
    25            </property>
    26        </bean>
    27        <bean id="MymethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
    28            <property name="paramName" value="actionName"></property>
    29        </bean>


    配置编码信息方式页面传递的信息出现乱码
    CharacterEncodingFilter    通过配置forceEncoding属性为true设置request和response的编码格式皆为utf-8

     1   <!--编码过滤器  -->
     2   <filter>
     3     <filter-name>CharacterEncoding</filter-name>
     4     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
     5     <init-param>
     6       <param-name>encoding</param-name>
     7       <param-value>utf-8</param-value>
     8     </init-param>
     9      <init-param>  
    10            <param-name>forceEncoding</param-name>  
    11            <param-value>true</param-value>  
    12      </init-param>   
    13   </filter>
    14   
    15   <filter-mapping>
    16        <filter-name>CharacterEncoding</filter-name>
    17        <url-pattern>/*</url-pattern>
    18   </filter-mapping>
    配置springmvc核心过滤器    对所有相关.do的请求进行拦截

     1   <servlet>
     2     <servlet-name>springmvc</servlet-name>
     3     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     4     <init-param>
     5       <param-name>contextConfigLocation</param-name>
     6       <param-value>classpath:applicationContext.xml</param-value>
     7     </init-param>
     8     <load-on-startup>1</load-on-startup>
     9   </servlet>
    10   <servlet-mapping>
    11     <servlet-name>springmvc</servlet-name>
    12     <url-pattern>*.do</url-pattern>
    13   </servlet-mapping>

     在这里如果拦截的信息配置成为了 :“/*”    ,最好配置称为"/"

    DispatcherServlet会将向动态页面请求,即向jsp页面的跳转请求也当做是一个普通的Controller请求。中央调度器会调用处理器映射器为其查找相应的处理器。当然是找不到的。jsp页面会报404错误 结论:/*会拦截动态资源

    配置该节点解决无法访问静态资源的问题:

    <mvc:default-servlet-handler/>

    或者是配置这一种:

     <mvc:resources location="/images/" mapping="/images/**"></mvc:resources>

     这一种:

  • 相关阅读:
    splay复杂度的证明
    splay的写法
    洛谷 P3722 [AH2017/HNOI2017]影魔
    洛谷 P4770 [NOI2018]你的名字
    清北考前刷题day3下午好
    P3043 [USACO12JAN]牛联盟Bovine Alliance(并查集)
    bzoj3252攻略(线段树+dfs序)
    清北考前刷题day2早安
    清北考前刷题day2下午好
    清北考前刷题day1下午好
  • 原文地址:https://www.cnblogs.com/john69-/p/6087248.html
Copyright © 2020-2023  润新知