国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

轟轟烈烈的搭建Spring + Spring MVC + Mybatis

Fourierr / 2660人閱讀

摘要:配置和編碼格式使用提供過濾器處理字符編碼。請求從不改變資源的狀態,無副作用。中添加,采用默認配置已經足夠面對大多數場景注入參考鏈接手把手教你整合最優雅框架我的編碼習慣接口定義設計最佳實踐

創建項目

打開IDEA -> Create New Project
勾選Create from archetype

選擇使用的maven的本地位置,這個根據實際情況選擇就好

這一步會填寫項目名稱,根據實際來就好了。

一個空的項目就已經完成了。

搭建項目基礎目錄

創建java文件夾

設置java文件夾為Sources Root,只有在Rources RootxiaIRDEA才提供創建Java文件的選項

創建Package

配置Tomcat Service

選擇Deployment

選擇帶exploded的

然后OK,添加剛才的tomcat到配置里面

運行tomcat

運行成功

以上完成基礎的搭建,下面會引入框架

配置Spring pom.xml 添加Spring

         
     ...
     
    
        5.0.4.RELEASE
    
    
    
    
        ...
        
        
        
            org.springframework
            spring-core
            ${spring.version}
        
        
            org.springframework
            spring-beans
            ${spring.version}
        
        
            org.springframework
            spring-context
            ${spring.version}
        
        
        
            org.springframework
            spring-jdbc
            ${spring.version}
        
        
            org.springframework
            spring-tx
            ${spring.version}
        
        
        
            org.springframework
            spring-web
            ${spring.version}
        
        
            org.springframework
            spring-webmvc
            ${spring.version}
        
        
            org.springframework
            spring-test
            ${spring.version}
        
        
        ...
        
    

    ...

創建resources目錄下的配置文件

spring-mvc.xml



    
    
    
    

    
    

    
    

    
    

如上配置,加入了一個InternalResourceViewResolver(視圖解析器),這個視圖解析器根據Controller的方法返回字符串或者ModelAndView,找到對應的視圖(頁面),可以再視圖中加入EL表達式等代碼綁定數據。
InternalResourceViewResolver中包含兩個參數prefix和suffix,他們分別是視圖解析器的前綴和后綴,比如,上面配置了prefix的值為‘/WEB-INF/jsp/’,那么當Controller返回字符串‘index’時,視圖解析器回找到‘/WEB-INF/jsp/index’;如果再加上suffix屬性,值為‘.jsp’,那么視圖解析器就會去找‘/WEB-INF/jsp/index.jsp’。

web.xml 配置Spring MVC和編碼格式


    Archetype Created Web Application

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

    
    
        SpringMVC
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:conf/spring-*.xml
        
        1
    
    
        SpringMVC
        /
    

如上面代碼所示,這樣配置的目的是把請求交給Spring框架的DispatcherServlet處理,由它找到請求路徑所對應的Controller,把請求交由這個Controller處理。

pom.xml 添加servlet web

         
    ...
         
    
    
        ...
        
        
        
            jstl
            jstl
            1.2
        
        
            taglibs
            standard
            1.1.2
        
        
            javax.servlet
            javax.servlet-api
            3.1.0
        
        
        ...
        
    
    
    ...
    

創建UserController.java和userIndex.jsp文件

創建UserController.java

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping("/index")
    public ModelAndView index(ModelAndView modelAndView){
        modelAndView.setViewName("/user/userIndex");
        return modelAndView;
    }
}

創建userIndex.jsp

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



    User Index


User Index

此時,運行系統,可通過Spring注解進入jsp頁面,如:/user/index

Spring & Mybatis 創建mapper層

pom.xml 引入 mybatis 和 jdbc


         
     ...
     
     
     
        ...
     
        
        
            mysql
            mysql-connector-java
            5.1.37
            runtime
        
        
        
            org.mybatis
            mybatis
            3.4.5
        
        
            org.mybatis
            mybatis-spring
            1.3.1
        
    
        ...
        
    
    
    ...

創建數據庫mybatis

create database mybatis;

創建表user

CREATE TABLE user(
    id INT PRIMARY KEY auto_increment,
    username VARCHAR ( 20 ),
    password VARCHAR ( 20 ),
    sex VARCHAR ( 10 ),
    address VARCHAR ( 20 ) 
);

在 resources 目錄下創建 jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3307/mybatis?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root
在 resources 目錄下創建 conf/spring-mybatis.xml



    
    

    
    

    
    

    
    

    
    

在 resources 目錄下創建 conf/mybatis-config.xml



    
    
        
        

        
        

        
        
    

創建UserMapper

public interface UserMapper {

    /**
     * 查詢一個用戶
     *
     * @param  id 用戶id
     * @return User
     */
    public User getUser(Integer id) throws Exception;

    /*
     * 新增用戶
     * @param user
     * @return
     * @throws Exception
     */
    public int insertUser(User user) throws Exception;

    /*
     * 修改用戶
     * @param user
     * @param id
     * @return
     * @throws Exception
     */
    public int updateUser(User user) throws Exception;

    /*
     * 刪除用戶
     * @param id
     * @return
     * @throws Exception
     */
    public int deleteUser(Integer id) throws Exception;

    /*
     * 查詢所有的用戶信息
     * @return
     * @throws Exception
     */
    public List getUsers() throws Exception;
}

創建UserMapper.xml




    
    
        
        
        
        
        
    

    
    
    
    
    
        insert into user (username,password,sex,address) values
        (#{username},#{password},#{sex},#{address})
    

    
        update user set
        address=#{address} where
        id=#{id}
    

    
        delete from user where
        id=#{id}
    

    

    
    

    

創建Service層

User

public class User {

    private Integer id;
    private String username;
    private String password;
    private String sex;
    private String address;

    // getter and setter
    
}

UserService.java

public interface UserService {

    /**
     * 查詢一個用戶
     *
     * @param  id 用戶id
     * @return User
     */
    public User getUser(Integer id) throws Exception;

    /*
     * 新增用戶
     * @param user
     * @return
     * @throws Exception
     */
    public int insertUser(User user) throws Exception;

    /*
     * 修改用戶
     * @param user
     * @param id
     * @return
     * @throws Exception
     */
    public int updateUser(User user) throws Exception;

    /*
     * 刪除用戶
     * @param id
     * @return
     * @throws Exception
     */
    public int deleteUser(Integer id) throws Exception;

    /*
     * 查詢所有的用戶信息
     * @return
     * @throws Exception
     */
    public List getUsers() throws Exception;
}

UserServiceImpl.java

@Service
@Transactional
public class UserServiceImpl implements UserService {

    @Autowired
    UserMapper userMapper;

    /**
     * 查詢一個用戶
     *
     * @param  id 用戶id
     * @return User
     */
    public User getUser(Integer id)  throws Exception {
        return userMapper.getUser(id);
    }

    /*
     * 新增用戶
     * @param user
     * @return
     * @throws Exception
     */
    public int insertUser(User user) throws Exception {
        return userMapper.insertUser(user);
    }

    /*
     * 修改用戶
     * @param user
     * @param id
     * @return
     * @throws Exception
     */
    public int updateUser(User user) throws Exception {
        return userMapper.updateUser(user);
    }

    /*
     * 刪除用戶
     * @param id
     * @return
     * @throws Exception
     */
    public int deleteUser(Integer id) throws Exception {
        return userMapper.deleteUser(id);
    }

    /*
     * 查詢所有的用戶信息
     * @return
     * @throws Exception
     */
    public List getUsers() throws Exception {
        return userMapper.getUsers();
    }
}
spring-service.xml



    
    
修改web.xml
classpath:spring/spring-mvc.xml
# 改成 -->
classpath:spring/spring-*.xml
Controller層

創建相應文件

編寫返回的Bean,統一返回格式,ResultBean
public class ResultBean implements Serializable {

    /**
     * 錯誤代碼
     */
    private static final int SUCCESS = 0; // 成功
    private static final int CHECK_FAIL = 1; // 失敗
    private static final int UNKNOWN_EXCEPTION  = -99; // 拋出異常
    /**
     * 接口返回狀態碼,0表示成功,其他的看對應定義
     *
     * 推薦:
     * 0  : 表示成功
     * >0 :  表示已知的異常(需要在調用的地方多帶帶處理)
     * <0 :  表示未知的異常(不需要多帶帶處理,調用方統一處理)
     */
    private int code = SUCCESS; // 返回狀態

    /**
     * 返回信息(出錯的時候使用)
     */
    private String msg = "success";

    /**
     * 返回的數據
     */
    private T data;

    /**
     * 請求正確(新增、修改、刪除信息),返回調用
     */
    public ResultBean() {
        super();
    }

    /**
     * 請求數據正確,返回調用
     * @param data 返回數據
     */
    public ResultBean(T data) {
        super();
        this.data = data;
    }

    /**
     * 請求出錯,返回調用
     * @param msg 錯誤提醒語句
     */
    public ResultBean(String msg) {
        this.code = CHECK_FAIL;
        this.msg = msg;
    }

    /**
     * 請求異常,返回調用
     * @param e 異常
     */
    public ResultBean(Throwable e) {
        super();
        this.msg = e.toString();
        this.code = UNKNOWN_EXCEPTION;
    }
    
    /**
     * getter and setter
     * 
     * 因為屬性是private的,所以屬性必須有getter才能在被獲取
     */

}
接口采用RESTful API

使用四種HTTP方法POST,GET,PUT,DELETE可以提供CRUD功能(創建,獲取,更新,刪除)。

獲取:使用GET方法獲取資源。GET請求從不改變資源的狀態,無副作用。GET方法是冪等的。GET方法具有只讀的含義。因此,你可以完美的使用緩存

創建:使用POST創建新的資源。對同一URL進行多次請求會生成多份資源,所以POST不是冪等的

更新:使用PUT創建或更新現有資源。對同一URL多次PUT都是相同的,所以PUT方法是冪等的

刪除:使用DELETE刪除現有資源,有副作用,但DELETE方法是冪等的

冪等操作的特點是其任意多次執行所產生的影響均與一次執行的影響相同
--- POST - 創建 GET - 獲取 PUT - 更新 DELETE - 刪除
/users 創建一個用戶 獲取用戶列表 批量更新用戶信息 批量刪除用戶信息
/users/{id} --- 獲取單個用戶信息 更新單個用戶信息 刪除單個用戶信息

完成UserController的編碼

/**
 * 用戶信息管理
 */
@Controller
public class UserController {

    @Autowired
    private UserService userService;

    /*
     * 獲取用戶列表
     *
     * @return
     * @throws Exception
     */
    @ResponseBody
    @GetMapping("/users")
    public ResultBean> getUsers() throws Exception {

        List users = userService.getUsers();

        return new ResultBean>(users);
    }

    /*
     * 新增用戶信息
     *
     * @return
     * @throws Exception
     */
    @ResponseBody
    @PostMapping("/users")
    public ResultBean insertUser(@RequestBody User user) throws Exception {

        int result = userService.insertUser(user);

        if (result > 0) {
            return new ResultBean();
        } else {
            return new ResultBean("新增失敗");
        }
    }

    /*
     * 獲取用戶信息
     *
     * @param id 用戶id
     * @return
     * @throws Exception
     */
    @ResponseBody
    @GetMapping("/users/{id}")
    public ResultBean getUser(@PathVariable Integer id) throws Exception {

        User user = userService.getUser(id);

        return new ResultBean(user);
    }

    /*
     * 修改用戶信息
     *
     * @return
     * @throws Exception
     */
    @ResponseBody
    @PutMapping("/users/{id}")
    public ResultBean updateUser(@PathVariable Integer id, @RequestBody User user) throws Exception {

        user.setId(id);
        int result = userService.updateUser(user);

        if (result > 0) {
            return new ResultBean();
        } else {
            return new ResultBean("修改失敗");
        }

    }

    /*
     * 刪除用戶信息
     *
     * @param id 用戶id
     * @return
     * @throws Exception
     */
    @ResponseBody
    @DeleteMapping("/users/{id}")
    public ResultBean deleteUser(@PathVariable Integer id) throws Exception {

        int result = userService.deleteUser(id);

        if (result > 0) {
            return new ResultBean();
        } else {
            return new ResultBean("刪除失敗");
        }
    }
}
使用@RequestBody注解常用來處理content-type不是默認的application/x-www-form-urlcoded編碼的內容,比如說:application/json或者是application/xml等,本例子目標是處理application/json

使用@PathVariable Integer id映射@RequestMapping("/users/{id}") / @GetMapping("/users/{id}") / @DeleteMapping("/users/{id}")等請求中的{id}

引入fastjson
fastjson是阿里巴巴的開源JSON解析庫,它可以解析JSON格式的字符串,支持將Java Bean序列化為JSON字符串,也可以從JSON字符串反序列化到JavaBean。

         
    ...
         
    
    
        ...
        
        
            com.alibaba
            fastjson
            1.2.47
        
        
        ...
        
    
    
    ...
    

/conf/spring-mvc.xml中添加FastJson,FastJson采用默認配置已經足夠面對大多數場景




    ...

    
    
        
            
        
    

    ...

參考鏈接
手把手教你整合最優雅SSM框架
我的編碼習慣-接口定義
RESTful API 設計最佳實踐

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68874.html

相關文章

  • 寫這么多系列博客,怪不得找不到女朋友

    摘要:前提好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲抱歉了。熟悉我的人都知道我寫博客的時間比較早,而且堅持的時間也比較久,一直到現在也是一直保持著更新狀態。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲:抱歉了!。自己這段時...

    JerryWangSAP 評論0 收藏0
  • 【Java】基于Maven搭建Spring+SpringMVC+Mybatis框架

    摘要:關于的配置,可以參考這篇文章的第一個小節配置模板引擎搭什么搭直接用腳手架不行嗎下載就能用下載就能用下載就能用碼云咳咳,開個玩笑,如果本著學習態度的話,那就慢慢啃吧搭建空的項目使用搭建基本的空項目填寫和,,選擇項目的地址,在新的窗口打開最 關于springMVC的配置,可以參考這篇文章的第一個小節:【java】intellij idea SpringMVC 配置FreeMarker模板引...

    edagarli 評論0 收藏0
  • 70 個 Spring 最常見面試題,Java 晉升必會

    摘要:容器自動完成裝載,默認的方式是這部分重點在常用模塊的使用以及的底層實現原理。 對于那些想面試高級 Java 崗位的同學來說,除了算法屬于比較「天方夜譚」的題目外,剩下針對實際工作的題目就屬于真正的本事了,熱門技術的細節和難點成為了主要考察的內容。 這里說「天方夜譚」并不是說算法沒用,不切實際,而是想說算法平時其實很少用到,甚至面試官都對自己出的算法題一知半解。 這里總結打磨了 70 道...

    Ashin 評論0 收藏0
  • SSM框架網站后臺搭建(一)

    摘要:傳統的代碼中,在類中調用其他對象,都是自己出來一個對象,然后調用,這樣代碼的耦合度就比較高。日志對象和主程序的耦合度降到最低,即使更改日志對象的操作,主程序不受影響。 SSM框架網站后臺搭建(一) 1.所用技術簡單介紹 1.SSM中的S:Spring Spring在百度詞條上的解釋是: Spring是一個開放源代碼的設計層面框架,他解決的是業務邏輯層和其他各層的松耦合問題,因此它將面向...

    ZweiZhao 評論0 收藏0
  • springmvc簡介和快速搭建

    摘要:簡介和眾多其他框架一樣,它基于的設計理念,此外,它采用可松散耦合可插拔組件結構,比其他框架更具擴展性和靈活性。框架圍繞核心展開,是框架的總導演,總策劃,它負責截獲請求并將其分派給相應的處理器處理。 springmvc簡介 springmvc和眾多其他web框架一樣,它基于MVC的設計理念,此外,它采用可松散耦合可插拔組件結構,比其他MVC框架更具擴展性和靈活性。 springmvc通過...

    Sike 評論0 收藏0

發表評論

0條評論

Fourierr

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<