zoukankan      html  css  js  c++  java
  • SpringMvc项目的创建(前后端分离和不分离)

    1、前后端不分离

    1、首先创建一个maven项目,选对jdk版本然后点击next

     然后输入项目名和保存位置点击finish

    2、然后在pom中写打包方式,发布的都是war如图:

      让idea自动创建一个webapp目录

     3、在java目录下创建文件如下图:

     4、然后在pom中导入需要用到的依赖

    可以去这两个网址下载https://mvnrepository.com/和https://maven.aliyun.com/mvn

    需要用到的依赖有springmvc的(spring-webmvc)、servlet的(javax.servlet-api)、fastjson的(fastjson)、lombok的(lombok)、还有一个就是自己写的数据库封装

    的(自己写就是数据库驱动)(mysql-connector-java)和注解的(javax.annotation-api)和jsp(javax.servlet.jsp-api)包和jstl(jstl)包.。

    5、然后配置DispatcherServlet

    首先在web.xml中加入配置信息,代码的具体作用在之前的spring环境搭建文章中提到过,这里带过

    <servlet>
            <servlet-name>mvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>namespace</param-name>
                <param-value>springmvc</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>mvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </servlet>

    然后在创建namespace名字的配置文件(这两个的模板和代码作用在环境搭建的文章中都发过,这里直接用)

    <mvc:annotation-driven>
            <mvc:message-converters register-defaults="false">//默认消息转化器去掉然后转json
                <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"></bean>
            </mvc:message-converters>
    
        </mvc:annotation-driven>
        <context:component-scan base-package="com.neuedu.controller"></context:component-scan>
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
            <property name="prefix" value="/WEB-INF/pages/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>

    6、要想把对象放入IOC容器还需要在程序启动的时候来读取配置文件(在web.xml中配置)

    <!--服务器启动的时候,通过监听器来读取配置文件-->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </context-param>
        <listener>
            <listener-class>
                org.springframework.web.context.ContextLoaderListener
            </listener-class>
        </listener>

    顺便过滤一下乱码

    <!--乱码拦截器-->
        <filter>
            <filter-name>charsetfilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <!--把编码过滤成utf-8-->
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
            <init-param>
                <param-name>forceRequestEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
            <init-param>
                <param-name>forceResponseEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>charsetfilter</filter-name>
            <url-pattern>*</url-pattern>
        </filter-mapping>

    7、然后在resource目录下创建applicationContext.xml文件(和springmvc.xml模板一样),然后加入IOC容器扫描

    <context:component-scan base-package="com.lyt.service"></context:component-scan>
        <context:component-scan base-package="com.lyt.dao"></context:component-scan>

    8、环境基本就搭建完成了,然后来编写代码,演示一个简单的例子

    总结构如下图:

     先创建一个实体类pojo,在里面写实体类User包含三个属性id、username、likes

    然后编写他的dao层,接口中有一个查询所有用户的方法,具体实现类如下

    @Controller//可以放入IOC容器
    public class UserDaoImpl implements UserDao {
        @Override
        public List<User> list() {
            return JdbcUtil.executeQuery("select * from user",User.class);//调用封装好的jdbc工具
        }
    }

    然后写他的service层,接口中有一个查询所有用户的方法,来看具体实现类

    @Service//可以放入IOC容器
    public class UserServiceImpl implements UserService {
        @Resource
        UserDao userDao;
    
        @Override
        public List<User> list() {
            return userDao.list();
        }
    }

    最后写controller层

    @Controller
    public class user {
        @Resource
        UserService userService;
    
        @GetMapping("/index")
        String index(ModelMap modelMap){
            modelMap.addAttribute("list",userService.list());
            return "index";
        }
    }

    然后创建一个index.jsp(目录一定要跟springmvc.xml中配置的视图解析器地址对应上)

    内容如下

    然后配置一下Tomcat:

    先点击+来找到tomcat的local

    然后配置相关信息(端口号80的话就不用再地址中写了)

    如果用热部署的话就修改一下这里

    运行测试结果如下:

     这样就说明访问成功了,前面的代码具体含义在之前的文章中都介绍过了,模糊的可以去看看之前的部分。

    2、前后端分离

    前三步和1一样,第四步不用导入jsp(javax.servlet.jsp-api)包和jstl(jstl)包.

    在配置DispatcherServlet的时候注意如下几个问题

    1、配置文件的路径可以用calsspath来表示,就是java或者resource下(应为编译后这两个文件就会合并)

    2、这里不用配置视图解析器,但是配置一下编码问题和跨域问题

     <mvc:annotation-driven>
            <mvc:message-converters register-defaults="false">
                <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>application/json;charset=utf-8;</value>
                    </list>
                </property>
            </bean>
            </mvc:message-converters>
    
        </mvc:annotation-driven>
    <!--解决跨域问题,/**就是可以走多层基本不会用/*一层结构-->
        <mvc:cors>
            <mvc:mapping path="/**"></mvc:mapping>
        </mvc:cors>

    第六步和第七步也是一样的

    下面演示一下具体的例子,具体结构和上一个也是基本类似的

    但是需要改的是controller类,要把UserController改成下面的:

    @RestController
    public class user {
        @Resource
        UserService userService;
    
        @GetMapping("/user/index")
        List<User> list(){
            return userService.list();
        }
    }

    这个时候返回的就是json数据了,要用ajax去请求,这个时候在写一个ajax,具体位置就无所谓了,内容如下:

    <head>
            <meta charset="utf-8">
            <title></title>
            <style>
                *{
                    margin:0;
                    padding:0;
                }
                #wrap{
                    width:90vw;
                    height:90vh;    
                    position:absolute;
                    left:5vw;
                    top:5vh;
                }
            </style>
            <script src="js/jquery-3.5.1.min.js"></script>
        </head>
        <body>
            <div id="wrap"></div>
            <script>
                
                    $.ajax({
                        url:'http://localhost:8848/user/index',
                        type:'get',
                        dataType:'json',
                        success:function(response){
                            console.log(response)
                        }
                        
                    })
            </script>
        </body>

    执行结果如下:

  • 相关阅读:
    LeetCode 第46题 全排列
    docker安装单节点minio
    git的免密设置
    mysql不同字符集的转换过程
    二进制安装MySQL 8.0
    二进制方式安装mysql5.7.24
    mysql替换字段中指定的部分字符串
    Minio设置永久下载链接
    pt-online-schema-change使用详解
    Oracle pctfree和pctused详解
  • 原文地址:https://www.cnblogs.com/mvpmvp/p/13425827.html
Copyright © 2011-2022 走看看