Maven搭建SSM项目

1.基本环境部署

首先你需要的是把电脑的基本环境配置好,如果你用的windows系统:
1:jre环境
2:编译器:IntelliJ IDEA17
3:一个服务器,没有也行,在本机测试
4:Maven配置好

2.配置Maven

2.1下载maven

官方地址:http://maven.apache.org/download.cgi

Maven搭建SSM项目_第1张图片

解压并新建一个本地仓库文件夹
Maven搭建SSM项目_第2张图片

2.2配置本地仓库路径

Maven搭建SSM项目_第3张图片

Maven搭建SSM项目_第4张图片

2.3.配置maven环境变量

Maven搭建SSM项目_第5张图片

Maven搭建SSM项目_第6张图片

Maven搭建SSM项目_第7张图片

Maven搭建SSM项目_第8张图片

Maven搭建SSM项目_第9张图片

3.打开idea建立一个maven项目

Maven搭建SSM项目_第10张图片
选择Maven项目,勾选create from archetype,然后下一步输入GroupId和ArtifactId。
GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
一般GroupID就是填com.leafive.test这样子。我也忘记这个GroupId后面哪里能用到了,但ArtifactID是项目打包后的名字,最好和项目同名。

Maven搭建SSM项目_第11张图片
添加的配置为 archetypeCatalog=internal 可以自动建立对应目录!
点击NEXT
Maven搭建SSM项目_第12张图片
点击NEXT
Maven搭建SSM项目_第13张图片
点击Finish后项目开始创建
点击右下角查看进去
Maven搭建SSM项目_第14张图片
6.maven web模板项目结构
Maven搭建SSM项目_第15张图片

Maven搭建SSM项目_第16张图片

Maven搭建SSM项目_第17张图片

同样在main下新建test测试文件夹,再在此文件夹下新建java测试源码文件夹和resource测试资源文件夹
Maven搭建SSM项目_第18张图片
也可以右键项目-选择Open Module Settings打开项目配置页面更改
Maven搭建SSM项目_第19张图片
7.配置依赖jar包 ,写在pom.xml文件下
Maven搭建SSM项目_第20张图片

4.开始进行后台的xml文件配置

基本目录配置截图
Maven搭建SSM项目_第21张图片

1.mapper文件夹主要写mapper配置文件,访问数据库用的,一般一个类写一个mapper,里面有这个类的各种实现方法。
2.properties主要主要是各种配置文件,方便以后修改用。
3.spring这里把三个spring进行分类了

  • applicationContext-dao.xml
    1. 加载配置jdbc.property
      2.数据库连接池
      3.mapper配置,让spring管理sqlsessionfactory 使用mybatis和spring整合包中的
      4.配置mapper扫描

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd
                        http://www.springframework.org/schema/tx
                        http://www.springframework.org/schema/tx/spring-tx.xsd">

    
    <context:property-placeholder location="classpath:properties/jdbc.properties"/>

    
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="maxActive" value="30" />
        <property name="maxIdle" value="5" />
    bean>

    
    
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        
       
        
        <property name="dataSource" ref="dataSource">property>
        
        <property name="mapperLocations" value="classpath*:/mapper/*.xml"/>
    bean>



    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="akk.ssm.mapper"/>
    bean>

beans>
  • applicationContext-service.xml
    1.使用Spring组件扫描的方式来实现自动注入bean

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd
                        http://www.springframework.org/schema/tx
                        http://www.springframework.org/schema/tx/spring-tx.xsd">

    
    <context:component-scan base-package="akk.ssm.service.impl"/>

beans>
  • applicationContext-transaction.xml
    1.事务管理器对mybatis操作数据库事务控制,spring使用jdbc事务控制器
    二. 配置aop 切面编程

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd
                        http://www.springframework.org/schema/tx
                        http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        
        <property name="dataSource" ref="dataSource">property>
    bean>

    
    <tx:advice id="txAdvice">
        <tx:attributes>
            
            <tx:method name="save*" propagation="REQUIRED"/>
            <tx:method name="insert*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>

        tx:attributes>
    tx:advice>

    
    <aop:config>
        <aop:advisor advice-ref="txAdvice" pointcut="execution(* akk.ssm.service.impl.*.*(..))"/>
    aop:config>

beans>

4.springmvc

  1. 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置
    mvc:annotation-driven默认加载很多的参数绑定方法,
  2. 自动扫描 @Controller
  3. 加载静态资源
  4. 避免IE执行AJAX时,返回JSON出现下载文件
  5. 定义跳转的文件的前后缀 ,视图模式配置
  6. 解决@ResponseBody注解直接返回对象并转换成JSON时出现406问题
    同时解决了返回String类型乱码的问题
  7. 拦截器
  8. 文件上传配置

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-4.0.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    
    <mvc:annotation-driven >mvc:annotation-driven>

    
    <context:component-scan base-package="akk.ssm.controller"/>

    <mvc:default-servlet-handler/>
    
    
    


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


    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/" />
        <property name="suffix" value=".html"/>
    bean>

    
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/plain;charset=UTF-8value>
                        <value>text/html;charset=UTF-8value>
                    list>
                property>
            bean>
            <bean
                    class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>application/json; charset=UTF-8value>
                        <value>application/x-www-form-urlencoded; charset=UTF-8value>
                    list>
                property>
            bean>
        mvc:message-converters>
    mvc:annotation-driven>

    

    
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        
        <property name="defaultEncoding" value="UTF-8"/>
        
        <property name="maxUploadSize" value="32505856"/>
        
        <property name="maxInMemorySize" value="4096"/>
    bean>
beans>

5.这些xml文件配置完成后,就可以来进行具体的功能代码编写了,一般是controller和service和mapper同时编写的,我一般是先写controller然后遇到具体要写其他地方的时候再跳到其他地方写其他的,最后把controller完成,一个功能也就完成了!

5、登录功能的实现代码

controller类

@Controller
@RequestMapping("/login")
public class LoginController {

    @Autowired//可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作
    private UserService userService;

    //查询用户名
    @RequestMapping("/username")
    public @ResponseBody//把返回类型转换为Json对象
    GeResult login(HttpServletRequest request,
                   @RequestBody User user) throws Exception{

        //System.out.println(user.getUsername()+"akk");
        try {
            HttpSession session = request.getSession();
            User u = userService.findUserByusername(user.getUsername());//传到Mapper进行查找
            //返回ajax响应
            if (u==null){
                return new GeResult(-1, "用户名错误");//返回类型为一个对象,里面包含错误提示信息,利用了封装的特性,使代码更加简洁
            }else{
                if(u.getPassword().equals(user.getPassword())){
                    session.setAttribute("user", u); //将用户存到session
                    return new GeResult(0, u);  //登陆成功的返回
                } else{
                    return new GeResult(-2, "密码错误");
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
            return new GeResult(-3, "系统异常");
        }

    }

    //登出
    @RequestMapping("/logout")
    public String logout(HttpSession session) throws Exception{

        //清除session
        session.invalidate();
        //返回到登录页面,springmvc有视图模式配置
        return "login";
    }

service类

//接口
public interface UserService {
    public User findUserByusername(String username) ;
}
//impl实现
@Service("userService")
public class UserServiceimpl implements UserService{

    @Autowired
    private UserMapper userMapper;

    public User findUserByusername(String username) {
        return userMapper.findUserByusername(username);
    }


}

mapper类

public interface NumMapper {
    public void InsertNum(Num num);
    public List FindNum();
}

UserMapper.xml




<mapper namespace="akk.ssm.mapper.UserMapper">
    <select id="findUserByusername" parameterType="String" resultType="akk.ssm.pojo.User">

        SELECT * FROM  user  WHERE username=#{ VALUE }

    select>
mapper>

返回类GeResult具体代码,运用到封装特性!

 */
//这是一个返回信息的容器
/*
* 这才是泛型的正确写法,在前端指定数据类型,在后台用T不确定类型接收*/
public class GeResult {

    private int status; //返回状态信息,0是成功,-1是失败
    private String message; //返回的提示信息
    private T u;

    public GeResult(int status, String message){
        this.status = status;
        this.message = message;
    }

    public GeResult(int status, T u){
        this.status = status;
        this.u = u;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getU() {
        return u;
    }

    public void setU(T u) {
        this.u = u;
    }
}

这就是一个简单的登录的流程代码,数据库自己写就行了。

    我会把源程序发布的,大家可以下载调试,应该比网上那些其他人的不完整或者有问题的代码好一点吧,至少我这里是成功的,因为我也是接触SSM尚浅,有写的不好的多多包涵,但给新手看足够了,特别是第一次看的新手,应该有了我这一套你不需要看别的博客了,跑起来足够了。

    这个源代码不止是简单的登录页面,我是给别人写的一个小功能页面,还包括一个增添功能和查看功能,都是很简单的功能,初学者可以学习下。
    主要是前端的跳转和AJAX传递不好写,因为属于前端的内容,反正这一套项目主要是把前端和后台分开,前端和后台的连接就只靠ajax的url,完全分离,因为听已经工作了的学长说,以后在公司项目,前端和后台都是分开的,而且代码要规范,一定要规范!可能我这一套还不够规范,hh但商业级别的我现在还在探索,以后会写了再分享!也希望那些大神多分享一些商业级别的代码规范,这样是利大于弊的,不要吝啬,给后人多一些台阶,会更好促进整个编程环境的发展=。=

下载地址:http://download.csdn.net/detail/qq_31783173/9828605

你可能感兴趣的:(java系统)