补充Springmvc注解式开发

在xml上配置包扫描器:

让他扫描基本包才能实现并运用到了注解

<context:component-scan base-package="Controller02"></context:component-scan>

 

上面是spring搭的框架

 

package Controller02;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
* Created by Administrator on 2017/8/18.
*/
@Controller
//HappyController称为了一个控制器 处理请求
/*命名空间*/
@RequestMapping(value="/first",method ={ RequestMethod.POST,RequestMethod.GET})
public class HappyController {

@RequestMapping("/first")
public String dofirst(){
//逻辑视图名
return "/WEB-INF/insert.jsp";
}
@RequestMapping("/second")
public String doSeconed(){
//逻辑视图名
return "/WEB-INF/insert.jsp";
}
/*通配符*/
@RequestMapping("/*third")/*以third结尾就行*/
public String dothird(){
//逻辑视图名
return "/WEB-INF/insert.jsp";
}
/*任意级目录*/
@RequestMapping("/**/fourth")
public String dofourth(){
//逻辑视图名
return "/WEB-INF/insert.jsp";
}
@RequestMapping("/*/fiveth") /*必须有一级目录,有且只能有一级*/
public String dofiveth(){
//逻辑视图名
return "/WEB-INF/insert.jsp";
}
}

 

 

@RequestMapping在方法上加注解的作用?

下面让我来回答一下

@RequestMapping

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

RequestMapping注解有六个属性,下面我们把她分成三类进行说明。

 

package Controller02;

import java.util.List;

/**
* Created by Administrator on 2017/8/18.
*/
public class UserInfo {
private String uname;
private Book book; //域属性
public List<Book> books;

public List<Book> getBooks() {
return books;
}

public void setBooks(List<Book> books) {
this.books = books;
}

public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
}

 

 

 

 package Controller02;/* * Created by Happy on 2017-08-18.

 */
public class Book {
private String bookname;

public String getBookname() {
return bookname;
}

public void setBookname(String bookname) {
this.bookname = bookname;
}
}

封装个book类
/*域属性*/
@RequestMapping("/AreaArgument")1、 url映射,其定义了controller方法对应的url,进行处理器映射使用。//@RequestMapping实现对queryItems方法和url进行映射,一个方法对应一个url
public String login4(UserInfo info){ 方法名字随便起
System.out.println(info.getUname()+"\t"+info.getBook().getBookname());
return "/WEB-INF/index.jsp";
}
<context:component-scan base-package="Controller02"></context:component-scan>
 

在springmvc中其具有三个功能:

1、 url映射,其定义了controller方法对应的url,进行处理器映射使用。

使用方式:

在controller的方法上定义@RequestMapping

//@RequestMapping实现对queryItems方法和url进行映射,一个方法对应一个url

//一般建议将url和方法写成一样

@RequestMapping("/queryItems")

public ModelAndView queryItems()throws Exception{

}

2、窄化请求映射

即在controller类上定义方法映射路径的跟路径,方便对url进行分类管理,类似与strus.xml中包的命名空间。

\

3、限制http请求方法

\

 

 

二、

package Controller02;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
* Created by Administrator on 2017/8/18.
*/
@Controller
public class AragumentController {
@RequestMapping("/login")
/*零散参数自动装配*/
/*只要他两保持一致*/
public String doFirst(String uname){
System.out.println(uname);
return "/WEB-INF/index.jsp";
}
@RequestMapping("/login2")
/*自动装配对象*/
public String doFirst(UserInfo info){
System.out.println(info.getUname());
return "/WEB-INF/index.jsp";
}


@RequestMapping("/rightArgumentParam")
public String login3(@RequestParam("uname") String uname2){
System.out.println(uname2);
return "/WEB-INF/index.jsp";
}


//集合属性的自动装配
@RequestMapping("/ListArgument")
public String login5(UserInfo info){
System.out.println(info.getUname()+"\t"+info.getBooks().get(0).getBookname());
return "/WEB-INF/index.jsp";
}
/*域属性*/
@RequestMapping("/AreaArgument")
public String login4(UserInfo info){
System.out.println(info.getUname()+"\t"+info.getBook().getBookname());
return "/WEB-INF/index.jsp";
}
}

集合属性自动装配
<%--自动装配--%>/ListArgument表示路径url 访问页面@Connertoller中的@RequestMapping方法
<form action="${pageContext.request.contextPath}/ListArgument" method="post">
用户名: <input name="uname"/>
喜爱的图书1: <input name="books[0].bookname"/>
喜爱的图书2: <input name="books[1].bookname"/>
<input type="submit"/>
</form>
<%--校正参数
<form action="${pageContext.request.contextPath}/rightArgumentParam" method="post">
<input name="uname"/>
<input type="submit"/>
</form>--%>

<%--零散参数  一个值
<form action="${pageContext.request.contextPath}/login" method="post">
    <input name="uname"/>
<input type="submit"/>
</form>--%>
package Controller02;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
* Created by Administrator on 2017/8/18.
*/
@Controller
//HappyController称为了一个控制器 处理请求
/*命名空间*/
@RequestMapping(value="/first",method ={ RequestMethod.POST,RequestMethod.GET})
public class HappyController {

@RequestMapping("/first")
public String dofirst(){
//逻辑视图名
return "/WEB-INF/insert.jsp";
}
@RequestMapping("/second")
public String doSeconed(){
//逻辑视图名
return "/WEB-INF/insert.jsp";
}
/*通配符*/
@RequestMapping("/*third")/*以third结尾就行*/
public String dothird(){
//逻辑视图名
return "/WEB-INF/insert.jsp";
}
/*任意级目录*/
@RequestMapping("/**/fourth")
public String dofourth(){
//逻辑视图名
return "/WEB-INF/insert.jsp";
}
@RequestMapping("/*/fiveth") /*必须有一级目录,有且只能有一级*/
public String dofiveth(){
//逻辑视图名
return "/WEB-INF/insert.jsp";
}
}


posted @ 2017-08-20 09:14  liuzhe01  阅读(191)  评论(0编辑  收藏  举报