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的值,传递参数的时候,使用我们传递的参数值!

原文地址:https://www.cnblogs.com/guomingyt/p/8029460.html