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

資訊專(zhuān)欄INFORMATION COLUMN

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

Fourierr / 2664人閱讀

摘要:配置和編碼格式使用提供過(guò)濾器處理字符編碼。請(qǐng)求從不改變資源的狀態(tài),無(wú)副作用。中添加,采用默認(rèn)配置已經(jīng)足夠面對(duì)大多數(shù)場(chǎng)景注入?yún)⒖兼溄邮职咽纸棠阏献顑?yōu)雅框架我的編碼習(xí)慣接口定義設(shè)計(jì)最佳實(shí)踐

創(chuàng)建項(xiàng)目

打開(kāi)IDEA -> Create New Project
勾選Create from archetype

選擇使用的maven的本地位置,這個(gè)根據(jù)實(shí)際情況選擇就好

這一步會(huì)填寫(xiě)項(xiàng)目名稱(chēng),根據(jù)實(shí)際來(lái)就好了。

一個(gè)空的項(xiàng)目就已經(jīng)完成了。

搭建項(xiàng)目基礎(chǔ)目錄

創(chuàng)建java文件夾

設(shè)置java文件夾為Sources Root,只有在Rources RootxiaIRDEA才提供創(chuàng)建Java文件的選項(xiàng)

創(chuàng)建Package

配置Tomcat Service

選擇Deployment

選擇帶exploded的

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

運(yùn)行tomcat

運(yùn)行成功

以上完成基礎(chǔ)的搭建,下面會(huì)引入框架

配置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}
        
        
        ...
        
    

    ...

創(chuàng)建resources目錄下的配置文件

spring-mvc.xml



    
    
    
    

    
    

    
    

    
    

如上配置,加入了一個(gè)InternalResourceViewResolver(視圖解析器),這個(gè)視圖解析器根據(jù)Controller的方法返回字符串或者M(jìn)odelAndView,找到對(duì)應(yīng)的視圖(頁(yè)面),可以再視圖中加入EL表達(dá)式等代碼綁定數(shù)據(jù)。
InternalResourceViewResolver中包含兩個(gè)參數(shù)prefix和suffix,他們分別是視圖解析器的前綴和后綴,比如,上面配置了prefix的值為‘/WEB-INF/jsp/’,那么當(dāng)Controller返回字符串‘index’時(shí),視圖解析器回找到‘/WEB-INF/jsp/index’;如果再加上suffix屬性,值為‘.jsp’,那么視圖解析器就會(huì)去找‘/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
        /
    

如上面代碼所示,這樣配置的目的是把請(qǐng)求交給Spring框架的DispatcherServlet處理,由它找到請(qǐng)求路徑所對(duì)應(yīng)的Controller,把請(qǐng)求交由這個(gè)Controller處理。

pom.xml 添加servlet web

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

創(chuàng)建UserController.java和userIndex.jsp文件

創(chuàng)建UserController.java

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

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

創(chuàng)建userIndex.jsp

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



    User Index


User Index

此時(shí),運(yùn)行系統(tǒng),可通過(guò)Spring注解進(jìn)入jsp頁(yè)面,如:/user/index

Spring & Mybatis 創(chuàng)建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
        
    
        ...
        
    
    
    ...

創(chuàng)建數(shù)據(jù)庫(kù)mybatis

create database mybatis;

創(chuàng)建表user

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

在 resources 目錄下創(chuàng)建 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 目錄下創(chuàng)建 conf/spring-mybatis.xml



    
    

    
    

    
    

    
    

    
    

在 resources 目錄下創(chuàng)建 conf/mybatis-config.xml



    
    
        
        

        
        

        
        
    

創(chuàng)建UserMapper

public interface UserMapper {

    /**
     * 查詢(xún)一個(gè)用戶(hù)
     *
     * @param  id 用戶(hù)id
     * @return User
     */
    public User getUser(Integer id) throws Exception;

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

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

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

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

創(chuàng)建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}
    

    

    
    

    

創(chuàng)建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 {

    /**
     * 查詢(xún)一個(gè)用戶(hù)
     *
     * @param  id 用戶(hù)id
     * @return User
     */
    public User getUser(Integer id) throws Exception;

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

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

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

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

UserServiceImpl.java

@Service
@Transactional
public class UserServiceImpl implements UserService {

    @Autowired
    UserMapper userMapper;

    /**
     * 查詢(xún)一個(gè)用戶(hù)
     *
     * @param  id 用戶(hù)id
     * @return User
     */
    public User getUser(Integer id)  throws Exception {
        return userMapper.getUser(id);
    }

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

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

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

    /*
     * 查詢(xún)所有的用戶(hù)信息
     * @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層

創(chuàng)建相應(yīng)文件

編寫(xiě)返回的Bean,統(tǒng)一返回格式,ResultBean
public class ResultBean implements Serializable {

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

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

    /**
     * 返回的數(shù)據(jù)
     */
    private T data;

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

    /**
     * 請(qǐng)求數(shù)據(jù)正確,返回調(diào)用
     * @param data 返回?cái)?shù)據(jù)
     */
    public ResultBean(T data) {
        super();
        this.data = data;
    }

    /**
     * 請(qǐng)求出錯(cuò),返回調(diào)用
     * @param msg 錯(cuò)誤提醒語(yǔ)句
     */
    public ResultBean(String msg) {
        this.code = CHECK_FAIL;
        this.msg = msg;
    }

    /**
     * 請(qǐng)求異常,返回調(diào)用
     * @param e 異常
     */
    public ResultBean(Throwable e) {
        super();
        this.msg = e.toString();
        this.code = UNKNOWN_EXCEPTION;
    }
    
    /**
     * getter and setter
     * 
     * 因?yàn)閷傩允莗rivate的,所以屬性必須有g(shù)etter才能在被獲取
     */

}
接口采用RESTful API

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

獲?。菏褂肎ET方法獲取資源。GET請(qǐng)求從不改變資源的狀態(tài),無(wú)副作用。GET方法是冪等的。GET方法具有只讀的含義。因此,你可以完美的使用緩存

創(chuàng)建:使用POST創(chuàng)建新的資源。對(duì)同一URL進(jìn)行多次請(qǐng)求會(huì)生成多份資源,所以POST不是冪等的

更新:使用PUT創(chuàng)建或更新現(xiàn)有資源。對(duì)同一URL多次PUT都是相同的,所以PUT方法是冪等的

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

冪等操作的特點(diǎn)是其任意多次執(zhí)行所產(chǎn)生的影響均與一次執(zhí)行的影響相同
--- POST - 創(chuàng)建 GET - 獲取 PUT - 更新 DELETE - 刪除
/users 創(chuàng)建一個(gè)用戶(hù) 獲取用戶(hù)列表 批量更新用戶(hù)信息 批量刪除用戶(hù)信息
/users/{id} --- 獲取單個(gè)用戶(hù)信息 更新單個(gè)用戶(hù)信息 刪除單個(gè)用戶(hù)信息

完成UserController的編碼

/**
 * 用戶(hù)信息管理
 */
@Controller
public class UserController {

    @Autowired
    private UserService userService;

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

        List users = userService.getUsers();

        return new ResultBean>(users);
    }

    /*
     * 新增用戶(hù)信息
     *
     * @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("新增失敗");
        }
    }

    /*
     * 獲取用戶(hù)信息
     *
     * @param id 用戶(hù)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);
    }

    /*
     * 修改用戶(hù)信息
     *
     * @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("修改失敗");
        }

    }

    /*
     * 刪除用戶(hù)信息
     *
     * @param id 用戶(hù)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注解常用來(lái)處理content-type不是默認(rèn)的application/x-www-form-urlcoded編碼的內(nèi)容,比如說(shuō):application/json或者是application/xml等,本例子目標(biāo)是處理application/json

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

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

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

/conf/spring-mvc.xml中添加FastJson,F(xiàn)astJson采用默認(rèn)配置已經(jīng)足夠面對(duì)大多數(shù)場(chǎng)景




    ...

    
    
        
            
        
    

    ...

參考鏈接
手把手教你整合最優(yōu)雅SSM框架
我的編碼習(xí)慣-接口定義
RESTful API 設(shè)計(jì)最佳實(shí)踐

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/68874.html

相關(guān)文章

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

    摘要:前提好幾周沒(méi)更新博客了,對(duì)不斷支持我博客的童鞋們說(shuō)聲抱歉了。熟悉我的人都知道我寫(xiě)博客的時(shí)間比較早,而且堅(jiān)持的時(shí)間也比較久,一直到現(xiàn)在也是一直保持著更新?tīng)顟B(tài)。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒(méi)更新博客了,對(duì)不斷支持我博客的童鞋們說(shuō)聲:抱歉了!。自己這段時(shí)...

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

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

    edagarli 評(píng)論0 收藏0
  • 70 個(gè) Spring 最常見(jiàn)面試題,Java 晉升必會(huì)

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

    Ashin 評(píng)論0 收藏0
  • SSM框架網(wǎng)站后臺(tái)搭建(一)

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

    ZweiZhao 評(píng)論0 收藏0
  • springmvc簡(jiǎn)介和快速搭建

    摘要:簡(jiǎn)介和眾多其他框架一樣,它基于的設(shè)計(jì)理念,此外,它采用可松散耦合可插拔組件結(jié)構(gòu),比其他框架更具擴(kuò)展性和靈活性。框架?chē)@核心展開(kāi),是框架的總導(dǎo)演,總策劃,它負(fù)責(zé)截獲請(qǐng)求并將其分派給相應(yīng)的處理器處理。 springmvc簡(jiǎn)介 springmvc和眾多其他web框架一樣,它基于MVC的設(shè)計(jì)理念,此外,它采用可松散耦合可插拔組件結(jié)構(gòu),比其他MVC框架更具擴(kuò)展性和靈活性。 springmvc通過(guò)...

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

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

0條評(píng)論

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