zoukankan      html  css  js  c++  java
  • spring-web d10

    一,springweb项目

    1.首先建一个动态web项目,导入对应的jar包

    –commons-logging-1.1.3.jar
    –spring-aop-4.0.0.RELEASE.jar
    –spring-beans-4.0.0.RELEASE.jar
    –spring-context-4.0.0.RELEASE.jar
    –spring-core-4.0.0.RELEASE.jar
    –spring-expression-4.0.0.RELEASE.jar
    –spring-web-4.0.0.RELEASE.jar

    –spring-webmvc-4.0.0.RELEASE.jar

    2在src文件夹里建一个包,包中有UserController.java

    package com.neuedu.controller;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    @Controller
    @RequestMapping(value="/user")
    public class UserController { @RequestMapping(value="/showInfo") public String showInfo(){ System.out.println("你这个臭居居"); // return "/WEB-INF/views/success.jsp";//这是一个转发 return "success"; } }

    3.建一个DispatherServlet.xml,它的文件类型是Spring的类型,它需要扫描包获取里面的对象。prefix是前缀,suffix是后缀。

        <context:component-scan base-package="com.neuedu"></context:component-scan>

    <!--InternalResourceViewResolvers 是视图解析器 ,它会将逻辑视图转换成实际的物理视图,做一个转发操作!

                也就是说具体步骤:prefix +  方法的返回值  + suffix-->
                <!-- /WEB-INF/views/success.jsp -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
             <property name="prefix" value="/WEB-INF/views/"></property>    
             <property name="suffix" value=".jsp"></property>
        </bean>

    4.在web.xml里配置,输入di再alt+/可以调出配置好的模板,但是里面需要修改参数。最后配置所需要拦截的地址,和init-param里的param-value路径需要改成classpath:配置的springmvc,默认配置在src下,这样好配路径。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>spring-web</display-name>
      
    <!-- The front controller of this Spring Web application, responsible for handling all application requests -->
        <servlet>
            <servlet-name>springDispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:DispatherServlet-servlet.xml</param-value>
            </init-param>

    <!-- 数字0或者大于0的数字表示的是:在服务器启动的时候创建Servlet对象,而不是第一次访问的时候创建
    小于0的数字指的是:在第一次访问的时候创建Servlet对象.
    在数字大于O的情况下,数字越小,优先级越高!
    -->

           <load-on-startup>1</load-on-startup>

        </servlet>
    
        <!-- Map all requests to the DispatcherServlet for handling -->
        <servlet-mapping>
            <servlet-name>springDispatcherServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
      
      
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    5.写一个jsp,index.jsp页面用来发送请求,再写一个页面用来接收success.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
        <a href="${pageContext.request.contextPath}/user/showInfo/21">访问</a>
    </body>
    </html>

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <h1>成功</h1>
    </body>
    </html>

    这样就完成了从springmvc的编写。它会从前端输入,经过servlet操作,由web.xml里拦截,然后再xml里拦截所要的文件,在里面扫描包生成对应的对象。最后通过servlet转发了。

    最后return会在,InternalResourceViewResolvers 是视图解析器 ,它会将逻辑视图转换成实际的物理视图,做一个转发操作!也就是说具体步骤:prefix + 方法的返回值 + suffix。

    二.属性

    package com.neuedu.controller;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.CookieValue;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestHeader;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import com.neuedu.bean.User;
    
    @Controller
    @RequestMapping(value="/user")
    public class UserController {
        @RequestMapping(value="/testParam")
        public String testParam(
                @RequestParam(value="name") String name,
                @RequestParam(value="password") String password,
                @RequestParam(value="age",required=false, defaultValue="0") Integer age
                ){
        //这个是用来配置form表单项,最后进行输出,post和get有区别,post可以直接带参数,而get请求需要设置一个隐藏属性带参数。
            System.out.println(name+password+age);
        //    return "/WEB-INF/views/success.jsp";//这是一个转发
            return "success";
        }
        @RequestMapping(value="/testHeader")
        public String testHeader(@RequestHeader(value="Accept-Encoding")String Header,@RequestHeader(value="Accept")String Header1){
        //这个是根据获取请求头的参数,根据键获取对应的值。    
            System.out.println(Header+Header1);
            return "success";
        }
        @RequestMapping(value="/testCookieValue")
        public String testCookieValue(@CookieValue(value="JSESSIONID")String Header){    
        //这个是用来获取cookie属性的。    
            System.out.println(Header);
            return "success";
        }
        @RequestMapping(value="/testRawApi")
        public String testRawApi(HttpSession session,HttpServletRequest request,HttpServletResponse response){
        //可以用来获取request,response,session对象从而对其操作,但基本上不用    
            System.out.println(request);
            System.out.println(response);
            System.out.println(session);
            return "success";
        }
        @RequestMapping(value="/pojo")
        public String testPojo(User user){
            //用来获取自定义的类,里面如果user里还有参数,可以属性。属性的调用,需要注意的是前端页面的name属性需要与后面的一一对应。
            System.out.println(user);
            return "success";
        }
            
        @RequestMapping(value="/showInfo/{id}",method=RequestMethod.GET 
                )
        public String showInfo(@PathVariable(value="id")String id){
        //这个是get请求,相当于查询
            System.out.println(id);
        
            return "success";
        }
        @RequestMapping(value="/showInfo",method=RequestMethod.POST
                )
        public String showPost(){
        //这个是post请求,相当于增加参数。
            System.out.println("你这个臭居居");
            return "success";
        }
        @RequestMapping(value="/showInfo/{id}",method=RequestMethod.DELETE 
                )
        public String showDelete(@PathVariable(value="id")String id){
            //这个是delete请求,相当于删除,值得注意的是前端调用的是post请求,然后设置一个隐藏文本,里面name是_method,值是delete
            System.out.println(id);
            return "success";
        }
        @RequestMapping(value="/showInfo/{id}",method=RequestMethod.PUT 
                )
        public String showPut(@PathVariable(value="id")String id){
            //这个是put请求,相当于改,值得注意的是前端调用的是post请求,然后设置一个隐藏文本,里面name是_method,值是put。
            System.out.println(id);
            return "success";
        }
      
    }

    2.配置web.xml

    <!-- HiddenHttpMethodFilter过滤器可以将POST请求转化为put请求和delete请求! -->
                <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>
                        


    3.@RequestParam可以接收请求的参数,相当于Servlet的getParameter()方法!
    注意:要把@RequestParam和@PathVariable区分开:
    三个默认属性:
    value:这个字段要与请求参数的name属性值一致!
    required:布尔值,默认是true,当指定为false的时候,说明这个参数不是必须的,可以不带!
    defaultValue:在我们不传值的时候,默认使用defaultValue的值,传递参数的时候,使用我们传递的参数值!

    4.@RequestHeader:获取请求头信息,默认属性:
    value:这个字段要与请求参数的name属性值一致!
    required:布尔值,默认是true,当指定为false的时候,说明这个参数不是必须的,可以不带!
    defaultValue:在我们不传值的时候,默认使用defaultValue的值,传递参数的时候,使用我们传递的参数值!

  • 相关阅读:
    fetch jsonp请求接口
    mysql explain执行计划详解
    MySQL主从复制与读写分离 --非原创
    C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
    Mysql有没有语法可以在增加列前进行判断该列是否存在
    .net4.0注册到IIS ,重新注册IIS ,iis注册
    C#操作IIS程序池及站点的创建配置
    .net C# 对虚拟目录IIS的操作
    I​n​n​o​ ​s​e​t​u​p​ ​常​用​修​改​技​巧
    innosetup语法详解
  • 原文地址:https://www.cnblogs.com/guomingyt/p/8029460.html
Copyright © 2011-2022 走看看