SpringMVC05使用注解的方式

  <body>
    <a href="add">新增</a>
    <a href="update">修改</a>
    <a href="del">删除</a>
  </body>
  <body>
    <a href="add">新增</a>
    <a href="update">修改</a>
    <a href="del">删除</a>
  </body>

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<!-- 配置需要扫描的包 -->
<context:component-scan base-package="cn.bdqn.controller"/>

</beans>

修改springmvc的核心xml文件

@Controller
public class MyController {

    /**
     * @RequestMapping("/add") 等于@RequestMapping(value="/add")
     * 如果只有value属性值,可以省略
     * 代表用户访问的url
     * 新增
     */
    @RequestMapping("/add")
    public ModelAndView add(HttpServletRequest request,
            HttpServletResponse response) {
        return new ModelAndView("/WEB-INF/jsp/success.jsp", "result",
                "新增的方法......");
    }

    // 修改
    @RequestMapping("/update")
    public ModelAndView update(HttpServletRequest request,
            HttpServletResponse response) {
        return new ModelAndView("/WEB-INF/jsp/success.jsp", "result",
                "修改的方法......");
    }

    // 删除
    @RequestMapping("/del")
    public ModelAndView del(HttpServletRequest request,
            HttpServletResponse response) {
        return new ModelAndView("/WEB-INF/jsp/success.jsp", "result",
                "删除的方法......");
    }
}

MyController

=======================请求参数的传递========================

  <body>
<%-- 01.使用注解实现页面之间的跳转 --%>
    <a  href="user/add">增加</a>
    <a  href="user/update">修改</a>
    <a  href="user/del">删除</a>
<%--  02.请求中 携带参数  --%>
   <form action="user/addUser"  method="post">
      <input type="text" name="userName"/>
      <input type="password" name="pwd"/>
      <input type="submit" value="新增"/>
   </form> 

  </body>

package cn.bdqn.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

/**
 * @Controller: 就是配置我们的控制器
 *
 * 既然 每个方法上面都有 user
 * 那么我们只需要在 @Controller中新增@RequestMapping("/user")
 * 就相当于我们的namespace!   每个方法的@RequestMapping中都前缀加上了/user
 */
@Controller
@RequestMapping("/user")
public class UserController {

    /**
     * @RequestMapping("/add") :用户访问的url  /add  等同于  @RequestMapping(value="/add")
     * 如果只有一个value属性,则可以省略value,直接书写value 的属性值!
     * 如果有多个属性的时候,切记,value不能省略!
     */
    @RequestMapping("/add")
    public  String  add(){
        System.out.println("add");
        return  "success";
    }

    @RequestMapping("/update")
    public  String  update(){
        System.out.println("update");
        return "success";
    }
    /**
     * 通配符的使用
     *   *:只能是一级目录
     *   user/sasas/del   true
     *   user/sasas/sas/del  false
     *   **:可以没有 也可以多个目录!  0-N
     *   user/sasas/del   true
     *   user/sasas/sas/del  false
     */
    @RequestMapping("/**/del")
    public  String  del(){
        System.out.println("del");
        return  "success";
    }

    /**
     * 请求中携带参数
     * @RequestMapping(value={"/addUser","/haha","heihei"})
     * @RequestMapping({"/addUser","/haha","heihei"})
     * 多个请求 都会匹配我们当前的方法

    @RequestMapping(value={"/addUser","/haha","heihei"})
    public String  addUser(HttpServletRequest request,HttpServletResponse response){
        System.out.println(request.getParameter("userName"));
        System.out.println(request.getParameter("pwd"));
        return  "success";
    }
     */

    /**
     * params={"userName"}:请求过来的时候,参数必须有userName
     * params={"!userName"}:请求过来的时候,参数必须没有userName
     * params={"userName=admin"}:请求过来的时候,参数userName的值必须是admin
     */
    @RequestMapping(value="/addUser",params={"userName=admin"})
    public String  addUser(HttpServletRequest request,HttpServletResponse response){
        System.out.println(request.getParameter("userName"));
        System.out.println(request.getParameter("pwd"));
        return  "success";
    }

}

======================获取前台的数据 并解决乱码问题=======================

在index页面新增

<%--  03.请求中 携带参数  后台接收的时候出现乱码 并且返回
      get方式乱码:  conf文件夹下面的server.xml文件中配置  URIEncoding=UTF-8
      post:使用filter  !   spring mvc给你写好了!我们需要配置即可!
     --%>
   <form action="user/addUser2"  method="post">
      <input type="text" name="userName"/>
      <input type="password" name="pwd"/>
      <input type="submit" value="新增"/>
   </form> 

在controller中新增

    @RequestMapping(value="/addUser2")
    public String  addUser2(HttpServletRequest request,HttpServletResponse response){
        System.out.println(request.getParameter("userName"));
        System.out.println(request.getParameter("pwd"));
        return  "success";
    }

发现乱码问题,在web.xml文件中新增

 <!--解决post请求乱码的问题 -->
  <filter>
     <filter-name>charset</filter-name>
     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
     <!--保证后台的encoding 不为空 而且还设置了编码格式  -->
     <init-param>
       <param-name>encoding</param-name>
       <param-value>utf-8</param-value>
     </init-param>
     <!--
        底层代码
     this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)
     request.getCharacterEncoding():什么时候不为null
     01.前台设置了contentType="text/html; charset=ISO-8859-1"
     02.设置request.setCharacterEncoding()
        我们必须强制的让forceEncoding=true
      -->
      <init-param>
       <param-name>forceEncoding</param-name>
       <param-value>true</param-value>
      </init-param>
  </filter>

  <filter-mapping>
     <filter-name>charset</filter-name>
     <url-pattern>/*</url-pattern>
  </filter-mapping>

Request.getCharacterEncoding()
有两种情况不会为null
第一种是在jsp页面设置了contentType="text/html; charset=ISO-8859-1"
还有一种就是setCharacterEncoding了

一旦前台设置了contentType="text/html; charset=ISO-8859-1"
那么就会默认执行前台设置的编码! 为了按照我们定义的编码格式
所以 需要在web.xml中也要摄者forceEncoding=true

这样就能保证无论前台有没有设置 都会执行我们设置的utf-8格式

时间: 2024-10-09 08:35:52

SpringMVC05使用注解的方式的相关文章

springMvc的注解注入方式

springMvc的注解注入方式 最近在看springMvc的源码,看到了该框架的注入注解的部分觉的有点吃力,可能还是对注解的方面的知识还认识的不够深刻,所以特意去学习注解方面的知识.由于本人也是抱着学习的态度来阅读源码,若文章在表述和代码方面如有不妥之处,欢迎批评指正.留下你的脚印,欢迎评论!希望能互相学习. 1,首先定义三个常用的注解Service,Autowired,Contrller:(主要的解释都在代码中有,在这里就不多陈述) Service: package com.lishun.A

hibernate用注解的方式实现orm

hibernate 有两种方式实现把一张表映射成一个对象,一种是配置文件的方式,一种是注解的方式.这里用hibernate提供的注解的方式实现一个对象和一张表之间的对应. 思路: 首先在hibernate.cfg.xml文件中配置如下内容:数据库,方言,是否显示sql,加载映射类:注意这个hibernate.cfg.xml位置在src下. 因为new Configuration().configure().这个configure()函数打开源码默认的hiberante.cfg.xml就在src下

通过注解的方式允许跨域

SpringMVC解决跨域的两种方案 1. 什么是跨域 跨域,即跨站HTTP请求(Cross-site HTTP request),指发起请求的资源所在域不同于请求指向资源所在域的HTTP请求. 2. 跨域的应用情景 当使用前后端分离,后端主导的开发方式进行前后端协作开发时,常常有如下情景: 后端开发完毕在服务器上进行部署并给前端API文档. 前端在本地进行开发并向远程服务器上部署的后端发送请求.在这种开发过程中,如果前端想要一边开发一边测试接口,就需要使用跨域的方式. 3. 通过注解的方式允许

基于注解的方式管理Bean

--------------------siwuxie095 基于注解的方式管理 Bean (一)准备 1.注解,可以理解为代码中的特殊标记,使用注解可以帮助完成功能 2.注解写法:@注解名称(属性名称="属性值") 3.注解可以使用在类上面.方法上面.属性上面 4.注解可以替代配置文件来管理 Bean,但不可能完全脱离配置 文件,仍然需要在配置文件中做少许配置 5.创建 Spring 配置文件,并引入 XML 约束 spring-beans-4.3.xsd 和 spring-cont

使用注解的方式搭建基本hibernate和struts2运行环境

创建dynamic web project 在webcontent——web-inf——lib 中添加相应的需要的jar包,jar包在网上有很多资源,就不进行说明了 搭建hibernate环境 在src下 编写hibernate.xml文件 编写实体类 注意 : hibernate.xml文件中的 属性<property name="hbm2ddl.auto">create </property> 根据你的程序的配置 在初始化hibernate环境的时候 反向生

一篇非常经典的springMVC注解实现方式详解

今天公司让搭建个springMVC的注解框架,研究了好半天,网络搜罗了半天,好不容易找到篇,拿来分享下: 原文出处:http://www.itxxz.com/a/kuangjia/2014/0531/4.html 大家好,我是IT学习者的螃蟹,前两天写了一个spring MVC的注解实例,目前看来下载使用的人数已有不少,使用过程中也有不少人对其中的配置存有一些不解和疑问,在这里螃蟹就那个实例中的spring配置详细说明一下,算作是对spring注解模式的一次全方位解析.         在实例中

java web学习总结(二十一) -------------------模拟Servlet3.0使用注解的方式配置Servlet

一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet-name>ActionServlet</servlet-name> 3 <servlet-class>me.gacl.web.controller.ActionServlet</servlet-class> 4 </servlet> 5 6 <ser

JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring? Spring是分层的JavaSE/EE full-stack(一站式)轻量级开源框架. 所谓分层: SUN提供的EE的三层结构:web层.业务层.数据访问层(也称持久层,集成层). Struts2是web层基于MVC设计模式框架. Hibernate是持久的一个ORM的框架. 所谓一站式:Spring框架有对三层的每层解决方案.

spring schedule定时任务(一):注解的方式

我所知道的java定时任务的几种常用方式: 1.spring schedule注解的方式: 2.spring schedule配置文件的方式: 3.java类继承TimerTask: 第一种方式的实现: 1.使用maven创建spring项目,schedule在spring-context.jar的包下边,因此需要导入与之相关的包:同时,我配的是spring web项目,也同时导入了spring-web和spring-webmvc的包,如下: <dependency> <groupId&