• springmvc之增删改查


    spring框架的好处,就是能用注解干的事情,就不用写代码。代码分离,各司其职。

    1.导包,还是4大核心架包,加上web和webmvc 加日志记录 logging.

    2.配置文件:springmvc.xml 同上,所以就不写了

      web.xml  第一个配置前端控制器,负责处理所有应用程序请求,已经说过了,

    <!-- Map all requests to the DispatcherServlet for handling -->将所有请求映射到DispatcherServlet处理

    来说说第二个<!-- 配置一个支持rest风格的filter --> ctrl+shift+t 然后输入hidden 复制全类名

    HiddenHttpMethodFilter 翻译: 隐藏的Http方法过滤  作用:
    Rest支持
    页面要发起delete和put(更新)形式的请求是不容易的,所以要配置
    1、配置上支持将页面普通请求转化为delete和put请求的过滤器【Filter】
    <!-- 配置一个支持rest风格的filter -->
        <filter>
            <filter-name>HiddenHttpMethodFilter</filter-name>
            <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>HiddenHttpMethodFilter</filter-name>
            <!-- 拦截所有请求 -->
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    2、在页面发请求的时候,指定我们自定义的请求方式

        1)、method="post"
        2)、在表单上添加一个额外的input ,name叫_method,值就是我们指定的请求方式
     

     index.jsp 核心代码:

    <body>
      <a href="hello">hello</a><br/>
      <a href="rm/handle01?user=123">规定请求参数</a><br/>
      <a href="rm/handle02">规定请求头</a><br/>
      <a href="rm/handle03">规定请求方式</a>
    <form action="rm/handle03"method="post">
    <input type="submit" value="POST提交" />
    </form><br/>
    <a href="handle01">路径模糊匹配handle01</a>
    <hr/>

    <h3>测试Rest风格的URL</h3>
    <a href="book/1">查询图书</a><br/>
    update:
    <form action="book/1" method="post">
    <input name="_method" value="PUT"/>
    <input type="submit" value="修改图书"/>
    </form><br/>

    delete:
    <form action="book/1" method="post">
    <input name="_method" value="DELETE"/>
    <input type="submit" value="删除图书"/>
    </form><br/>

    <form action="book" method="post">
    <input type="submit" value="新增图书"/>
    </form><br/>

    </body>

     测试如下:

    @Controller
    public class PathVariableTest {
        
        @RequestMapping("/deletebook/{bookid}")
        public String handle01(@PathVariable("bookid") Integer bookid){
            System.out.println("删除的 图书id:"+bookid);
            return "success";
        }
    }

    注解:

      @Controller:告诉Spring这是一个控制器,是用来控制跳转逻辑的

      @RequestMapping("/lookmm"):/代表从当前项目根目录下找

      @RequestMapping两个位置

           类上:为当前类的每一个方法的请求地址指定一个基准路径
           方法上: 
        注解的其他属性:
      params:规定请求参数的
         *  param1: 表示请求必须包含名为 param1 的请求参数
         *  !param1: 表示请求不能包含名为 param1 的请求参数
         *  param1 != value1: 表示请求包含名为 param1 的请求参数,但其值不能为 value1
         *  {“param1=value1”, “param2”}: 请求必须包含名为 param1 和param2 的两个请求参数,且 param1 参数的值必须为 value1
         *
         * headers:规定请求头的
         *
         * method:规定请求方式
         *   页面【GET/POST】-不讨论ajax;
         *   GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE;
         *
         * consumes:
         *      消费:规定这个方法能接受哪种内容类型的请求
         *      发请求有Content-Type:application/x-www-form-urlencoded,表示当前请求的内容类型
         *
         * produces:
         *      生产:规定这个方法是产生什么内容类型的数据;
         *          response.setContentType("text/html;charset=utf-8")
     
    RequestMapping-Ant风格的路径 
      
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    /**
     * 路径的模糊匹配
     * @author lfy
     *
     * SpringMVC:RequestMapping进行路径映射允许写通配符;Ant风格的路径
     *    ?:通配一个字符
     *    *:通配0/多个字符:也可以匹配一层路径
     *    **:通配多层路径
     *   精确优先
     *       最精确------?------*-------**
     *
     */
    
    @Controller
    public class TestRequestMapping2Controller {
    
        /**
         * 精确匹配:
         *         精确优先
         * @return
         */
        @RequestMapping("/handle01")
        public String handle01(){
            System.out.println("handle01...");
            return "success";
        }
    
        @RequestMapping("/handle0?")
        public String handle02(){
            System.out.println("handle02...");
            return "success";
        }
    
        @RequestMapping("/handle0*")
        public String handle03(){
            System.out.println("handle03...");
            return "success";
        }
    
        @RequestMapping("/**/handle04")
        public String handle04(){
            System.out.println("handle04...");
            return "success";
        }
    
    }

     增删改查:GET 查询、DELETE 删除、PUT 更新、POST 新增

    @Controller
    public class RestTestController {
        
        @RequestMapping(value="/book",method=RequestMethod.POST)
        public String addBook() {
            System.out.println("图书添加完成");
            return "success";
        }
    
        @RequestMapping(value="/book/{id}",method=RequestMethod.PUT) 
        public String updateBook(@PathVariable("id")Integer id) {
            System.out.println("图书修改完成" + id);
            return "success";
        }
    
        @RequestMapping(value="/book/{id}",method=RequestMethod.DELETE)
        public String deleteBook(@PathVariable("id")Integer id) {
            System.out.println("图书删除完成" + id);
            return "success";
        }
    
        @RequestMapping(value="/book/{id}",method=RequestMethod.GET)
        public String getBook(@PathVariable("id")Integer id) {
            System.out.println("图书查询完成" + id);
            return "success";
        }
    }

     解决响应乱码问题:加在web.xml配置文件中 ,CharacterEncodingFilter 字符编码过滤器

        <!--字符编码的filter一定要放在最前面  -->
          <filter>
              <filter-name>CharacterEncodingFilter</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>
            <!-- 解决响应乱码 -->
            <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>
  • 相关阅读:
    MetaException(message:Could not connect to meta store using any of the URIs provided. Most recent failure: org.apache.thrift.transport.TTransportException: java.net.ConnectException: 拒绝连接 (Connection
    使用spark将内存中的数据写入到hive表中
    Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=Mypc, access=WRITE, inode="/":fan:supergroup:drwxr-xr-x
    Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
    Machine Learning --> L1 & L2正则化
    matplotlib--> pyplot&np.arange()函数的简单用法!
    PyTorch-->pytorch学习(2)
    随意一点 --> CSE-CIC-IDS2018 on AWS
    随意一点 --> 向量的期望值
    As a reader --> MetaPoison: Practical General-purpose Clean-label Data Poisoning
  • 原文地址:https://www.cnblogs.com/JavaBlackHole/p/7381909.html
Copyright © 2020-2023  润新知