intellij 配制 maven spring mvc

intellij 配制 maven spring mvc

用intellij工具创建基于maven构建的spring mvc工程。基于spring4.2.0只构建基于注解的mvc工程。

一,主要环境

  • intellij(14.1.4)
  • maven(3.3.3)
  • spring(4.2.0)
  • jdk(1.7.0)

二,安装maven

  • 下载mavne并安装

  • 配制环境变量,查看maven版本。
    这里写图片描述
    这里写图片描述
    这里写图片描述

  • 配制intellij
    这里写图片描述
    这里写图片描述

三,intellij新建工程

创建一个基于maven的空webApp
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

这里写图片描述

四,配制springmvc依懒

更多的依懒可以在maven仓库里面进行查询

新建java sources文件夹
这里写图片描述
这里写图片描述
这里写图片描述
如上图创建一个包名com.smvc 这个包名将在后面配制spring.xml文件中用到

这里写图片描述
在上图中添加如下代码

 <!--spring mvc 核心包依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.2.0.RELEASE</version>
    </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>4.2.0.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>4.2.0.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>4.2.0.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-test</artifactId>
          <version>4.2.0.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework.data</groupId>
          <artifactId>spring-data-jpa</artifactId>
          <version>1.8.2.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
      </dependency>
      <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.2.1-b03</version>
      </dependency>
      <dependency>
          <groupId>jstl</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
      </dependency>



      <!--hibernate支持-->
      <dependency>
          <groupId>org.hibernate.javax.persistence</groupId>
          <artifactId>hibernate-jpa-2.0-api</artifactId>
          <version>1.0.0.Final</version>
      </dependency>
      <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-entitymanager</artifactId>
          <version>3.6.10.Final</version>
      </dependency>

      <!--mysql数据库驱动-->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.34</version>
      </dependency>


      <dependency>
          <groupId>commons-pool</groupId>
          <artifactId>commons-pool</artifactId>
          <version>1.6</version>
      </dependency>
      <dependency>
          <groupId>commons-dbcp</groupId>
          <artifactId>commons-dbcp</artifactId>
          <version>1.4</version>
      </dependency>
      <dependency>
          <groupId>commons-collections</groupId>
          <artifactId>commons-collections</artifactId>
          <version>3.2</version>
      </dependency>



<!--json数据传输-->
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-annotations</artifactId>
          <version>2.6.2</version>
      </dependency>
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.6.2</version>
      </dependency>
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
          <version>2.6.2</version>
      </dependency>

五,配制web.xml

包含一个中文乱码的过滤器,和基本的Springmvc配制

这里写图片描述


    <!--乱码过滤器-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>

        <init-param>
            <param-name>forceEncoding </param-name>
            <param-value>true </param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>



    <servlet>
        <servlet-name>chapter2</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/springwebxml/*-servlet.xml</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>chapter2</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


    <welcome-file-list>
        <welcome-file>test.jsp</welcome-file>
    </welcome-file-list>

这里写图片描述
如上图web.xml配制中spring的配制文件未找到。下面将解决之。

五,创建spring 配制文件 *-servlet.xml

如果步骤四,里面配制的是加载springwebxml文件夹下的*-servlet.xml
所以需要在WEB-INF文件夹下新建一个springwebxml的文件夹
然后在springwebxml文件下新建chapter2-servlet.xml和db-servlet.xml

这里写图片描述
输入文件名chapter2-servlet即可创建文件

这里写图片描述


    <!--指明 controller 所在包,并扫描其中的注解-->
    <context:component-scan base-package="com.smvc"/>
    <!-- 静态资源(js、image等)的访问 -->
    <mvc:default-servlet-handler/>
    <!-- 开启注解 -->
    <mvc:annotation-driven/>

    <!--视图解析器的配置-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <!--<ref bean="mappingJacksonHttpMessageConverter"/>-->
                <ref bean="stringHttpMessageConverter"/>
            </list>
        </property>
    </bean>


    <bean id="mappingJacksonHttpMessageConverter"
          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>application/json;charset=UTF-8</value>
            </list>
        </property>
    </bean>

    <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
                <value>application/json;charset=UTF-8</value>
            </list>
        </property>
    </bean>

这里写图片描述
如上图上拷入上段代码后会报错,光标定位到错误行,直接art+enter引入相应的资源即可。同时把 base-package 改为“com.smvc”

五,创建数据库配制文件文件 *-servlet.xml

这里写图片描述
在db-servlet.xml中导入以下代码


       <!-- 获取配置文件 -->
       <bean id="config"
             class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
              <property name="locations" value="classpath:db-config.properties">
              </property>
       </bean>

       <!-- 获取数据源 -->
       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
              <property name="driverClassName">
                     <value>${db.dirverClass}</value>
              </property>
              <property name="url">
                     <value>${db.url}</value>
              </property>
              <property name="username">
                     <value>${db.username}</value>
              </property>
              <property name="password">
                     <value>${db.password}</value>
              </property>
       </bean>

       <!--   JdbcTemplate   -->
       <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
              <constructor-arg ref="dataSource"></constructor-arg>
              <property name="dataSource" ref="dataSource" />
       </bean>

       <!-- 定义事务管理器  -->
       <bean id="transactionManager"
             class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
              <property name="dataSource" ref="dataSource" />
       </bean>

这里写图片描述
如上图在db-config.properties文件中输入以下代码

db.url= jdbc:mysql://localhost:3306/jms?useUnicode=true&characterEncoding=UTF-8
db.username=root
db.password=123456
db.dirverClass= com.mysql.jdbc.Driver

六,新建JSP文件

这里写图片描述
如上图我们在chapter2-servlet.xml中已经配制了返回视图解析器的文件目录。所以我们创建一个jsp目录,并在下面创建jsp文件。

这里写图片描述
新建一些jsp文件,主要是返回视图时用。

这里写图片描述
如上图创建一个测试用的jsp文件,主要是发起jquery的json请求。代码如下

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript" src="js/jquery-1.9.1.js" charset="utf-8"></script>
    <script type="text/javascript" src="js/jquery-1.9.1.min.js" charset="utf-8"></script>
    <script>
        var cfg = {
            type: 'POST',
            data: JSON.stringify({username: 'tim.易', password: 'password'}),
            dataType: 'json',
            contentType: 'application/json;charset=UTF-8',
            async:false,
            success: function (result) {
                alert(JSON.stringify(result));
            },
            error: function (data) {
                alert("error")
            }
        };

        function doTestJson() {
            cfg.url = "testJquery.spring";
//            alert(cfg.data);
            $.ajax(cfg);
        }


        function userinfo(username, password) {
            this.username = username;
            this.password = password;
        }

        function sendAjax1() {
            var userinfoRef = new userinfo('中国', '中国人');
            var jsonStringRef = JSON.stringify(userinfoRef);
            alert(jsonStringRef);
            $.ajax({
                type: "POST",
                data: jsonStringRef,
                url: "getJSON1.spring?t=" + new Date().getTime(),
                dataType: 'json',
                enctype: "application/x-www-form-urlencoded",
                contentType: 'application/json;charset=UTF-8'
            });
        }

        function sendAjax2() {
            var myArray = new Array();
            myArray[0] = "中国1";
            myArray[1] = "中国2";
            myArray[2] = "中国3";
            myArray[3] = "中国4";
            var jsonString = JSON.stringify(myArray);
            $.ajax({
                type: "POST",
                data: jsonString,
                url: "getJSON2.spring?t=" + new Date().getTime(),
                dataType: 'json',
                enctype: "application/x-www-form-urlencoded",
                contentType: 'application/json;charset=UTF-8'
            });
        }


        function sendAjax3() {
            var myArray = new Array();
            myArray[0] = new userinfo('中国1', '中国人1');
            myArray[1] = new userinfo('中国2', '中国人2');
            myArray[2] = new userinfo('中国3', '中国人3');
            myArray[3] = new userinfo('中国4', '中国人4');
            var jsonString = JSON.stringify(myArray);
            $.ajax({
                type: "POST",
                data: jsonString,
                url: "getJSON3.spring?t=" + new Date().getTime(),
                dataType: 'json',
                enctype: "application/x-www-form-urlencoded",
                contentType: 'application/json;charset=UTF-8'
            });
        }

        function sendAjax4() {
            var jsonObject = {
                "username": "accp",
                "work": [{
                    "address": "address1"
                }, {
                    "address": "address2"
                }],
                "school": {
                    "name": "tc",
                    "address": "pjy"
                }
            }
            var jsonString = JSON.stringify(jsonObject);
            $.ajax({
                type: "POST",
                data: jsonString,
                url: "getJSON4.spring?t=" + new Date().getTime(),
                dataType: 'json',
                enctype: "application/x-www-form-urlencoded",
                contentType: 'application/json;charset=UTF-8'
            });
        }



        function sendAjax5() {
            cfg.url = "dbquery";
//            alert(cfg.data);
            $.ajax(cfg);
        }

        function sendAjax6() {
            cfg.url = "dbinsert";
            cfg.data=JSON.stringify({userName: 'tim.易111', userAge: 13});
//            alert(cfg.data);
            $.ajax(cfg);
        }

    </script>
</head>
<body>


<%=request.getContextPath()+"/js"%>
${pageContext.request.contextPath}+"/jss"
<div id="aaa"></div>

<input type="button" onclick="doTestJson()" value="jquery"/>
<br/>
<input type="button" onclick="sendAjax1()" value="sendAjax1"/>
<br/>
<input type="button" onclick="sendAjax2()" value="sendAjax2">
<br/>
<input type="button" onclick="sendAjax3()" value="sendAjax3">
<br/>
<input type="button" onclick="sendAjax4()" value="sendAjax4">
<br/>
<input type="button" onclick="sendAjax5()" value="数据库查询">
<input type="button" onclick="sendAjax6()" value="数据库更新">
<br/>

</body>
</html>

七,新建POJO

这里写图片描述
代码如下

public class UserInfo {

    public UserInfo(){

    }

    public UserInfo(String username,String password){
        this.username=username;
        this.password=password;
    }

    private String username;

    private String password;

    public String getUsername() {
        return username;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }


}

这里写图片描述
代码如下

public class UserPO {
    private Integer userId;
    private String userName;
    private Integer userAge;

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Integer getUserAge() {
        return userAge;
    }

    public void setUserAge(Integer userAge) {
        this.userAge = userAge;
    }
}

这里写图片描述
代码如下

@Repository
public class UserDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    // 此方法把USEMBO表对应的字段查询出来依次放入userPO中
    public Collection<UserPO> doquery() {
        String sql = "SELECT T.USERID,T.USERNAME,T.USERAGE FROM userInfo T";
        return jdbcTemplate.query(sql, new RowMapper() {
            public Object mapRow(ResultSet rs, int num) throws SQLException {
                UserPO user = new UserPO();
                user.setUserId(rs.getInt("USERID"));
                user.setUserName(rs.getString("USERNAME"));
                user.setUserAge(rs.getInt("USERAGE"));
                return user;
            }
        });
    }


    public Collection<UserPO> insert(UserPO userPO){
        String sql = "insert into userInfo (USERNAME,USERAGE) values ('"+userPO.getUserName()+"',"+userPO.getUserAge()+")";
        jdbcTemplate.update(sql);
        return doquery();
    }



    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
}

八,新建Controller

这里写图片描述
代码如下


@Controller
public class Test {

    @Autowired
    private HttpServletRequest request;

    @RequestMapping(value="/testJquery", method = RequestMethod.POST)
    @ResponseBody
    public UserInfo testJquery(@RequestBody UserInfo userinfo){
        System.out.println("------getJSON1---start----"+request.getContentType());
        System.out.println(userinfo.getUsername());
        System.out.println(userinfo.getPassword());
        try {
            System.out.println(URLDecoder.decode(userinfo.getUsername(),"UTF-8"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        userinfo.setUsername(userinfo.getUsername()+"-->服务器");
        System.out.println("------getJSON1---end----");
        return userinfo;
    }

    @RequestMapping(value="/getJSON1")
    @ResponseBody
    public void getJSON1(@RequestBody UserInfo userinfo){
        System.out.println("------getJSON1---start----");
        System.out.println(userinfo.getUsername());
        System.out.println(userinfo.getPassword());
        System.out.println("------getJSON1---end----");
    }

    @RequestMapping(value="/getJSON2")
    public void getJSON2(@RequestBody ArrayList<String> list){
        System.out.println("------getJSON2---start----");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("------getJSON2---end----");
    }

    @RequestMapping(value="/getJSON3")
    public void getJSON3(@RequestBody List<Map> list){
        System.out.println("------getJSON3---start----");
        for (int i = 0; i < list.size(); i++) {
            Map map=list.get(i);
            System.out.println(map.get("username")+" "+map.get("password"));
        }
        System.out.println("------getJSON3---end----");
    }

    @RequestMapping(value="/getJSON4")
    public void getJSON4(@RequestBody Map map){
        System.out.println("------getJSON4---start----");
        System.out.println(map.get("username"));
        List<Map> workList=(List)map.get("work");
        for (int i = 0; i < workList.size(); i++) {
            Map eachAddressMap=workList.get(i);
            System.out.println("address="+eachAddressMap.get("address"));
        }
        Map schoolMap=(Map)map.get("school");
        System.out.println(schoolMap.get("name"));
        System.out.println(schoolMap.get("address"));
        System.out.println("------getJSON4---end----");
    }
}

九,使用Springmvc dao操作数据库

这里写图片描述
代码如下

@Controller
public class DbTest {

    @Autowired
    UserDao dao;

    /**
     * 数据库测试,查询用户表数据
     * @param userinfo
     * @return
     */
    @RequestMapping(value="/dbquery", method = RequestMethod.POST)
    @ResponseBody
    public List<UserPO> testDb(@RequestBody UserInfo userinfo){
        System.out.println("------getJSON1---start----");
        Collection<UserPO> list = dao.doquery();
        List<UserPO> users = new ArrayList<UserPO>();
        UserPO user = null;
        for (UserPO userPO : list) {
            user = new UserPO();
            user.setUserId(userPO.getUserId());
            user.setUserName(userPO.getUserName());
            System.out.println(user.getUserName());
            user.setUserAge(userPO.getUserAge());
            users.add(user);
        }
        System.out.println("------getJSON1---end----");
        return users;
    }

    /**
     * 数据库测试,写入数据到用户表中,并查询返回结果
     * @param userPO1
     * @return
     */
    @RequestMapping(value="/dbinsert", method = RequestMethod.POST)
    @ResponseBody
    private List<UserPO>  insert(@RequestBody UserPO userPO1){
        Collection<UserPO> list = dao.insert(userPO1);
        List<UserPO> users = new ArrayList<UserPO>();
        UserPO user = null;
        for (UserPO userPO : list) {
            user = new UserPO();
            user.setUserId(userPO.getUserId());
            user.setUserName(userPO.getUserName());
            System.out.println(user.getUserName());
            user.setUserAge(userPO.getUserAge());
            users.add(user);
        }
        return  users;
    }

}

十新建tomcat发布APP并访问

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值