成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

SpringMVC【開發(fā)Controller】詳解

Pines_Cheng / 598人閱讀

摘要:是使用攔截器來自動(dòng)幫我們完成中文亂碼的問題的。這是我的首頁當(dāng)然了,基于注解和基于來開發(fā),都是通過映射器適配器和視圖解析器的。能夠控制請(qǐng)求路徑和請(qǐng)求方式一個(gè)控制器寫多個(gè)業(yè)務(wù)方法到目前為止,我們都是一個(gè)控制器寫一個(gè)業(yè)務(wù)方法,這肯定是不合理的。

前言

本文主要是講解在Controller中的開發(fā),主要的知識(shí)點(diǎn)有如下:

編碼過濾器

使用注解開發(fā)

注解@RequestMapping詳解

業(yè)務(wù)方法接收參數(shù)

字符串轉(zhuǎn)日期

重定向和轉(zhuǎn)發(fā)

返回JSON

SpringMVC過濾編碼器

在SpringMVC的控制器中,如果沒有對(duì)編碼進(jìn)行任何的操作,那么獲取到的中文數(shù)據(jù)是亂碼!

即使我們?cè)趆andle()方法中,使用request對(duì)象設(shè)置編碼也不行!原因也非常簡(jiǎn)單,我們SpringMVC接收參數(shù)是通過控制器中的無參構(gòu)造方法,再經(jīng)過handle()方法的object對(duì)象來得到具體的參數(shù)類型的。

Struts2是使用攔截器來自動(dòng)幫我們完成中文亂碼的問題的。那么SpringMVC作為一個(gè)更加強(qiáng)大的框架,肯定也有對(duì)應(yīng)的方法來幫我們完成中文亂碼問題!

值得注意的是:該過濾編碼器只能解決POST的亂碼問題

我們只需要在web.xml配置文件中設(shè)置過濾編碼器就行了!

    
    
        CharacterEncodingFilter
        
            org.springframework.web.filter.CharacterEncodingFilter
        
        
            encoding
            UTF-8
        
    
    
        CharacterEncodingFilter
        /*
    

注解開發(fā)SpringMVC

我們?cè)诳焖偃腴T的例子中使用的是XML配置的方式來使用SpringMVC的,SpringMVC也能夠支持注解?!緜€(gè)人非常喜歡注解的方式】

我們?cè)谑褂肁ction的時(shí)候,要么繼承著AbstractCommandController類,要么顯示使用注解Controller接口。當(dāng)我們使用了注解以后就不用顯示地繼承或?qū)崿F(xiàn)任何類了!

開發(fā)流程

使用@Controller這個(gè)注解,就表明這是一個(gè)SpringMVC的控制器!

@Controller
public  class HelloAction  {
    
}

當(dāng)然了,現(xiàn)在Spring是不知道有這么一個(gè)注解的,因此我們需要在配置文件中配置掃描注解

值得注意的是:在配置掃描路徑的時(shí)候,后面不要加.*

不然掃描不了,我不知道學(xué)Struts2還是其他的地方時(shí)候,習(xí)慣加了.*,于是就搞了很久!

   


    

在控制器中寫業(yè)務(wù)方法

@Controller
public class HelloAction {

    /**
     *
     * @RequestMapping 表示只要是/hello.action的請(qǐng)求,就交由該方法處理。當(dāng)然了.action可以去掉
     * @param model 它和ModelAndView類似,它這個(gè)Model就是把數(shù)據(jù)封裝到request對(duì)象中,我們就可以獲取出來
     * @return 返回跳轉(zhuǎn)的頁面【真實(shí)路徑,就不用配置視圖解析器了】
     * @throws Exception
     */
    @RequestMapping(value="/hello.action")

    public String hello(Model model) throws Exception{
        System.out.println("HelloAction::hello()");
        model.addAttribute("message","你好");
        return "/index.jsp";
    }

}

跳轉(zhuǎn)到index頁面,首頁得到對(duì)應(yīng)的值。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

  
    $Title$
  
  
  這是我的首頁 
${message}

當(dāng)然了,基于注解和基于XML來開發(fā)SpringMVC,都是通過映射器、適配器和視圖解析器的。 只是映射器、適配器略有不同。但是都是可以省略的!

    
    

    
    

    
    

更新:上邊的適配器和映射器只是Spring3.1版本之前使用的、3.1版本之后現(xiàn)在一般用以下的兩個(gè)

映射器:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping


適配器:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

當(dāng)然了,這上面兩個(gè)配置也可以使用>替代注解處理器和適配器的配置。

RequestMapping

@RequestMapping能夠控制請(qǐng)求路徑和請(qǐng)求方式!

一個(gè)控制器寫多個(gè)業(yè)務(wù)方法

到目前為止,我們都是一個(gè)控制器寫一個(gè)業(yè)務(wù)方法,這肯定是不合理的。我們?cè)赟truts2中一個(gè)Action就對(duì)應(yīng)多個(gè)業(yè)務(wù)方法了。那么我們?cè)赟pringMVC中又怎么寫呢???

其實(shí)我們可以推理出來,@RequestMapping就是用于配置哪個(gè)請(qǐng)求對(duì)應(yīng)哪個(gè)業(yè)務(wù)方法的!

public @interface RequestMapping {
    String[] value() default {};

    RequestMethod[] method() default {};

    String[] params() default {};

    String[] headers() default {};
}

當(dāng)我們請(qǐng)求hello.action的時(shí)候,處理的業(yè)務(wù)方法是hello().....當(dāng)我們請(qǐng)求bye.action的時(shí)候,處理的業(yè)務(wù)方法是bye()

@Controller
public class HelloAction {

    /**
     *
     * @RequestMapping 表示只要是/hello.action的請(qǐng)求,就交由該方法處理。當(dāng)然了.action可以去掉
     * @param model 它和ModelAndView類似,它這個(gè)Model就是把數(shù)據(jù)封裝到request對(duì)象中,我們就可以獲取出來
     * @return 返回跳轉(zhuǎn)的頁面【真實(shí)路徑,就不用配置視圖解析器了】
     * @throws Exception
     */
    @RequestMapping(value="/hello.action")
    public String hello(Model model) throws Exception{
        System.out.println("HelloAction::hello()");
        model.addAttribute("message","你好");
        return "/index.jsp";
    }
    @RequestMapping(value = "/bye.action")
    public String bye(Model model) throws Exception {
        model.addAttribute("message","再見");
        return "/index.jsp";
    }
}

分模塊開發(fā)

當(dāng)然了,我們?cè)赟truts2常常使用namespace來進(jìn)行分模塊開發(fā),在SpringMVC中我們也可以這樣干,并且我們又是使用的是@RequestMapping這個(gè)注解!

只要把@RequestMapping這個(gè)注解寫到類上面去,就代表了分模塊。


@Controller
//我們知道,如果是value屬性上的注解,我們可以把value省略掉的
@RequestMapping("/zhongfucheng")
public class HelloAction {

    /**
     * @param model 它和ModelAndView類似,它這個(gè)Model就是把數(shù)據(jù)封裝到request對(duì)象中,我們就可以獲取出來
     * @return 返回跳轉(zhuǎn)的頁面【真實(shí)路徑,就不用配置視圖解析器了】
     * @throws Exception
     * @RequestMapping 表示只要是/hello.action的請(qǐng)求,就交由該方法處理。當(dāng)然了.action可以去掉
     */
    @RequestMapping(value = "/hello.action")
    public String hello(Model model) throws Exception {
        System.out.println("HelloAction::hello()");
        model.addAttribute("message", "你好");
        return "/index.jsp";
    }

    @RequestMapping(value = "/bye.action")
    public String bye(Model model) throws Exception {
        model.addAttribute("message", "再見");
        return "/index.jsp";
    }
}

那么我們想要HelloAction該控制器處理我們的請(qǐng)求,訪問的地址要么是:http://localhost:8080/zhongfucheng/hello.action,或者要么是http://localhost:8080/zhongfucheng/bye.action

限定某個(gè)業(yè)務(wù)控制方法,只允許GET或POST請(qǐng)求方式訪問

我們?nèi)绻胍薅硞€(gè)業(yè)務(wù)控制方法,只允許GET或POST請(qǐng)求方式訪問。還是通過@RequestMapping來實(shí)現(xiàn)。只要設(shè)定它的method屬性就行了!

    @RequestMapping(value = "/bye.action",method = RequestMethod.POST)
    public String bye(Model model) throws Exception {
        model.addAttribute("message", "再見");
        return "/index.jsp";
    }

當(dāng)我把業(yè)務(wù)方法的請(qǐng)求設(shè)置為POST以后,我想要通過GET方式來訪問該業(yè)務(wù)方法。就行不通了!

業(yè)務(wù)方法寫入傳統(tǒng)web參數(shù)

我們的業(yè)務(wù)方法除了可以寫Model這個(gè)參數(shù)以外,如果有需要我們還可以寫request,response等傳統(tǒng)Servlet的參數(shù)。這是一樣可以使用的....

但是呢,我們并不建議使用傳統(tǒng)的web參數(shù),因?yàn)闀?huì)耦合

@RequestMapping(method=RequestMethod.POST,value="/register")
    public String registerMethod(HttpServletRequest request,HttpServletResponse response) throws Exception{
        
        //獲取用戶名和薪水
        String username = request.getParameter("username");
        String salary = request.getParameter("salary");
        System.out.println("用戶注冊(cè)-->" + username + ":" + salary);
        
        //綁定到session域?qū)ο笾?        request.getSession().setAttribute("username",username);
        request.getSession().setAttribute("salary",salary);
        
        //重定向/jsp/success.jsp頁面
        //response.sendRedirect(request.getContextPath()+"/jsp/success.jsp");
        
        //轉(zhuǎn)發(fā)/jsp/ok.jsp頁面
        request.getRequestDispatcher("/jsp/ok.jsp").forward(request,response);
        
        //轉(zhuǎn)發(fā)(提倡)
        return "/jsp/success.jsp";
    }

小細(xì)節(jié):如果我們的返回值是返回一個(gè)真實(shí)路徑,而我們?cè)诔绦蛑杏质褂昧宿D(zhuǎn)發(fā)或重定向。。。那么具體跳轉(zhuǎn)的位置就是按我們程序中跳轉(zhuǎn)的路徑為準(zhǔn)

業(yè)務(wù)方法收集參數(shù)

我們?cè)赟truts2中收集web端帶過來的參數(shù)是在控制器中定義成員變量,該成員變量的名字與web端帶過來的名稱是要一致的...并且,給出該成員變量的set方法,那么Struts2的攔截器就會(huì)幫我們自動(dòng)把web端帶過來的參數(shù)賦值給我們的成員變量....

那么在SpringMVC中是怎么收集參數(shù)的呢????我們SpringMVC是不可能跟Struts2一樣定義成員變量的,因?yàn)镾pringMVC是單例的,而Struts2是多例的。因此SpringMVC是這樣干的:

業(yè)務(wù)方法寫上參數(shù)

參數(shù)的名稱要和web端帶過來的數(shù)據(jù)名稱要一致

接收普通參數(shù)

如果是普通參數(shù)的話,我們直接在方法上寫上與web端帶過來名稱相同的參數(shù)就行了!

用戶名:
編號(hào)
    @RequestMapping(value = "/hello.action")
    public String hello(Model model, String username, int id) throws Exception {

        System.out.println("用戶名是:" + username);
        System.out.println("編號(hào)是:" + id);

        model.addAttribute("message", "你好");
        return "/index.jsp";
    }

效果:

接收J(rèn)avaBean

我們處理表單的參數(shù),如果表單帶過來的數(shù)據(jù)較多,我們都是用JavaBean對(duì)其進(jìn)行封裝的。那么我們?cè)赟pringMVC也是可以這么做的。

創(chuàng)建Javabean

javaBean屬性與表單帶過來的名稱相同

在業(yè)務(wù)方法上寫上Javabean的名稱

創(chuàng)建JavaBean,javaBean屬性與表單帶過來的名稱相同

public class User {

    private String id;
    private String username;

    public User() {
    }
    public User(String id, String username) {
        this.id = id;
        this.username = username;
    }
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public String toString() {
        return "User{" +
                "id="" + id + """ +
                ", username="" + username + """ +
                "}";
    }
}

在業(yè)務(wù)方法參數(shù)上寫入Javabean

    @RequestMapping(value = "/hello.action")
    public String hello(Model model,User user) throws Exception {

        System.out.println(user);
        model.addAttribute("message", "你好");
        return "/index.jsp";
    }

收集數(shù)組

收集數(shù)組和收集普通的參數(shù)是類似的,看了以下的代碼就懂了。

用戶名:
愛好 籃球 足球 排球 羽毛球

業(yè)務(wù)方法獲取參數(shù)

    @RequestMapping(value = "/hello.action")
    public String hello(Model model,int[] hobby) throws Exception {


        for (int i : hobby) {
            System.out.println("喜歡運(yùn)動(dòng)的編號(hào)是:" + i);

        }

        model.addAttribute("message", "你好");
        return "/index.jsp";
    }

效果:

收集List集合

我們在Spring的業(yè)務(wù)方法中是不可以用List這樣的參數(shù)來接收的,SpringMVC給了我們另一種方案!

我們使用一個(gè)JavaBean把集合封裝起來,給出對(duì)應(yīng)的set和get方法。那么我們?cè)诮邮諈?shù)的時(shí)候,接收的是JavaBean

/**
 * 封裝多個(gè)Emp的對(duì)象 
 * @author AdminTC
 */
public class Bean {
    private List empList = new ArrayList();
    public Bean(){}
    public List getEmpList() {
        return empList;
    }
    public void setEmpList(List empList) {
        this.empList = empList;
    }
}

業(yè)務(wù)方法接收J(rèn)avaBean對(duì)象

    /**
     * 批量添加員工
     */
    @RequestMapping(value="/addAll",method=RequestMethod.POST)
    public String addAll(Model model,Bean bean) throws Exception{
        for(Emp emp:bean.getEmpList()){
            System.out.println(emp.getUsername()+":"+emp.getSalary());
        }
        model.addAttribute("message","批量增加員工成功");
        return "/jsp/ok.jsp";
    }

在JSP頁面直接寫上empList[下表].

批量注冊(cè)員工

其實(shí)這種方法看起來也沒有那么難理解,我們就是向上封裝了一層【與接收普通的JavaBean類似的】。

收集多個(gè)模型

我們有可能在JSP頁面上即有User模型的數(shù)據(jù)要收集,又有Emp模型的數(shù)據(jù)要收集....并且User模型的屬性和Emp模型的屬性一模一樣....此時(shí)我們?cè)撛趺崔k呢???

我們也是可以在User模型和Emp模型上向上抽象出一個(gè)Bean,該Bean有Emp和User對(duì)象

/**
 * 封裝User和Admin的對(duì)象
 * @author AdminTC
 */
public class Bean {
    private User user;
    private Admin admin;
    public Bean(){}
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    public Admin getAdmin() {
        return admin;
    }
    public void setAdmin(Admin admin) {
        this.admin = admin;
    }
}

在JSP頁面收集的時(shí)候,給出對(duì)應(yīng)的類型就行了。

    
姓名
月薪
入職時(shí)間 "/>
字符串轉(zhuǎn)日期類型

我們?cè)赟truts2中,如果web端傳過來的字符串類型是yyyy-mm-dd hh:MM:ss這種類型的話,那么Struts2默認(rèn)是可以自動(dòng)解析成日期的,如果是別的字符串類型的話,Struts2是不能自動(dòng)解析的。要么使用自定義轉(zhuǎn)換器來解析,要么就自己使用Java程序來解析....

而在SpringMVC中,即使是yyyy-mm-dd hh:MM:ss這種類型SpringMVC也是不能自動(dòng)幫我們解析的。我們看如下的例子:

JSP傳遞關(guān)于日期格式的字符串給控制器...

用戶名:
出生日期

User對(duì)象定義Date成員變量接收

 public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }

業(yè)務(wù)方法獲取Date值

    @RequestMapping(value = "/hello.action")
    public String hello(Model model, User user) throws Exception {

        System.out.println(user.getUsername() + "的出生日期是:" + user.getDate());


        model.addAttribute("message", "你好");
        return "/index.jsp";
    }

結(jié)果出問題了,SpringMVC不支持這種類型的參數(shù):

現(xiàn)在問題就拋出來了,那我們要怎么解決呢????

SpringMVC給出類似于Struts2類型轉(zhuǎn)換器這么一個(gè)方法給我們使用:如果我們使用的是繼承AbstractCommandController類來進(jìn)行開發(fā)的話,我們就可以重寫initBinder()方法了....

具體的實(shí)現(xiàn)是這樣子的:

    @Override
    protected void initBinder(HttpServletRequest request,ServletRequestDataBinder binder) throws Exception {
        binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
    }

那我們現(xiàn)在用的是注解的方式來進(jìn)行開發(fā),是沒有重寫方法的。因此我們需要用到的是一個(gè)注解,表明我要重寫該方法!

    @InitBinder
    protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
        binder.registerCustomEditor(
                Date.class,
                new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
        
    }

再次訪問:

值得注意的是:如果我們使用的是Oracle插入時(shí)間的話,那么我們?cè)赟QL語句就要寫TimeStrap時(shí)間戳插入進(jìn)去,否則就行不通!

結(jié)果重定向和轉(zhuǎn)發(fā)

我們一般做開發(fā)的時(shí)候,經(jīng)常編輯完數(shù)據(jù)就返回到顯示列表中。我們?cè)赟truts2是使用配置文件進(jìn)行重定向或轉(zhuǎn)發(fā)的:

而我們的SpringMVC就非常簡(jiǎn)單了,只要在跳轉(zhuǎn)前寫上關(guān)鍵字就行了!


    public String hello(Model model, User user) throws Exception {

        System.out.println(user.getUsername() + "的出生日期是:" + user.getDate());
        model.addAttribute("message", user.getDate());
        return "redirect:/index.jsp";
    }

以此類推,如果是想要再次請(qǐng)求的話,那么我們只要寫上對(duì)應(yīng)的請(qǐng)求路徑就行了!

    @RequestMapping(value = "/hello.action")
    public String hello(Model model, User user) throws Exception {

        return "redirect:/bye.action";
    }

    @RequestMapping("/bye.action")
    public String bye() throws Exception {

        System.out.println("我進(jìn)來了bye方法");
        return "/index.jsp";
    }

返回JSON文本

回顧一下Struts2返回JSON文本是怎么操作的:

導(dǎo)入jar包

要返回JSON文本的對(duì)象給出get方法

在配置文件中繼承json-default包

result標(biāo)簽的返回值類型是json

那么我們?cè)赟pringMVC又怎么操作呢???

導(dǎo)入兩個(gè)JSON開發(fā)包

jackson-core-asl-1.9.11.jar

jackson-mapper-asl-1.9.11.jar

在要返回JSON的業(yè)務(wù)方法上給上注解:

    @RequestMapping(value = "/hello.action")
    public
    @ResponseBody
    User hello() throws Exception {

        User user = new User("1", "zhongfucheng");
        return user;
    }

配置JSON適配器

    
        
            
                
                        
                            
                        
                
            
    

測(cè)試的JSP

    

測(cè)試:

Map測(cè)試:

    @RequestMapping(value = "/hello.action")
    public
    @ResponseBody
    Map hello() throws Exception {

        Map map = new HashMap();

        User user = new User("1", "zhongfucheng");
        User user2 = new User("12", "zhongfucheng2");
        map.put("total", user);
        map.put("rows", user2);


        return map;
    }

更新------------------------------------------------------------------

如果傳遞進(jìn)來的數(shù)據(jù)就是JSON格式的話,我們我們需要使用到另外一個(gè)注解@RequestBody,將請(qǐng)求的json數(shù)據(jù)轉(zhuǎn)成java對(duì)象

總結(jié)

使用注解的開發(fā)避免了繼承多余的類,并且非常簡(jiǎn)潔高效。

想要中文不亂碼,僅僅設(shè)置request的編碼格式是不行的。因?yàn)镾pringMVC是通過無參的構(gòu)造器將數(shù)據(jù)進(jìn)行封裝的。我們可以使用SpringMVC提供的過濾器來解決中文亂碼問題。

RequestMapping可以設(shè)置我們具體的訪問路徑,還可以分模塊開發(fā)。基于這么兩個(gè)原因,我們就可以在一個(gè)Action中寫多個(gè)業(yè)務(wù)方法了。

RequestMapping還能夠限制該請(qǐng)求方法是GET還是POST。

在我們的業(yè)務(wù)方法中,還可以使用傳統(tǒng)的request和response等對(duì)象,只不過如果不是非要使用的話,最好就別使用了。

對(duì)于SpringMVC自己幫我們封裝參數(shù),也是需要使用與request帶過來的名稱是相同的。如果不相同的話,我們需要使用注解來幫我們解決的。

如果是需要封裝成集合,或者封裝多個(gè)Bean的話,那么我們后臺(tái)的JavaBean就需要再向上一層封裝,在業(yè)務(wù)方法上寫上Bean進(jìn)行了。當(dāng)然了,在web頁面上要指定對(duì)應(yīng)Bean屬性的屬性。

字符串轉(zhuǎn)日期對(duì)象用到 @InitBinder注解來重寫方法。

返回JSON對(duì)象,我們就需要用到@ResponseBody注解,如果接收J(rèn)SON數(shù)據(jù)封裝成JavaBean的話,我們就需要用到@RequestBody注解。隨后在配置文件上創(chuàng)建對(duì)應(yīng)的bean即可。

如果文章有錯(cuò)的地方歡迎指正,大家互相交流。習(xí)慣在微信看技術(shù)文章,想要獲取更多的Java資源的同學(xué),可以關(guān)注微信公眾號(hào):Java3y

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68798.html

相關(guān)文章

  • spring mvc 常用注解標(biāo)簽詳解【轉(zhuǎn)載】

    摘要:分發(fā)處理器將會(huì)掃描使用了該注解的類的方法,并檢測(cè)該方法是否使用了注解。的作用相當(dāng)于,只不過按照自動(dòng)注入。作用該注解用于將的方法返回的對(duì)象,通過適當(dāng)?shù)霓D(zhuǎn)換為指定格式后,寫入到對(duì)象的數(shù)據(jù)區(qū)。用于注解層,在類上面注解。 原文地址 Controller 在SpringMVC中,控制器Controller負(fù)責(zé)處理由DispatcherServlet分發(fā)的請(qǐng)求,它把用戶請(qǐng)求的數(shù)據(jù)經(jīng)過業(yè)務(wù)處理層處理...

    Kylin_Mountain 評(píng)論0 收藏0
  • 從SpringBoot到SpringMVC

    摘要:概述用久了,深受其約定大于配置的便利性毒害之后,我想回歸到時(shí)代,看看開發(fā)模式中用戶是如何參與的。備注當(dāng)然本文所使用的全是非注解的配置方法,即需要在中進(jìn)行配置并且需要遵循各種實(shí)現(xiàn)原則。而更加通用主流的基于注解的配置方法將在后續(xù)文章中詳述。 showImg(https://segmentfault.com/img/remote/1460000015244684); 概述 用久了Sprin...

    xavier 評(píng)論0 收藏0
  • spring-MVC源碼解讀(一)

    摘要:處理器是繼前端控制器的后端控制器,在的控制下對(duì)具體的用戶請(qǐng)求進(jìn)行處理。由于涉及到具體的用戶業(yè)務(wù)請(qǐng)求,所以一般情況需要程序員根據(jù)業(yè)務(wù)需求開發(fā)。 1、mcv整體架構(gòu)和流程 showImg(https://segmentfault.com/img/bV55Qq?w=860&h=406); 用戶發(fā)送請(qǐng)求至前端控制器 DispatcherServlet DispatcherServlet 收到...

    I_Am 評(píng)論0 收藏0
  • springmvc常用注解標(biāo)簽詳解

    摘要:分發(fā)處理器將會(huì)掃描使用了該注解的類的方法,并檢測(cè)該方法是否使用了注解。作用該注解用于將的方法返回的對(duì)象,通過適當(dāng)?shù)霓D(zhuǎn)換為指定格式后,寫入到對(duì)象的數(shù)據(jù)區(qū)。用于注解層,在類上面注解。使用標(biāo)記的參數(shù)。 1、@Controller 在SpringMVC 中,控制器Controller 負(fù)責(zé)處理由DispatcherServlet 分發(fā)的請(qǐng)求,它把用戶請(qǐng)求的數(shù)據(jù)經(jīng)過業(yè)務(wù)處理層處理之后封裝成一個(gè)M...

    notebin 評(píng)論0 收藏0
  • SpringBoot自動(dòng)配置原理

    摘要:開啟自動(dòng)配置功能后文詳解這個(gè)注解,學(xué)過的同學(xué)應(yīng)該對(duì)它不會(huì)陌生,就是掃描注解,默認(rèn)是掃描當(dāng)前類下的。簡(jiǎn)單來說,這個(gè)注解可以幫助我們自動(dòng)載入應(yīng)用程序所需要的所有默認(rèn)配置。簡(jiǎn)單理解這二者掃描的對(duì)象是不一樣的。 前言 只有光頭才能變強(qiáng)。 文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y 回顧前面Spring的文章(以學(xué)習(xí)...

    Rainie 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<