ssm整合一个记录

配置文件

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/spring-bean.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <!--springmvc过滤器 及 springmvc.xml的路径控制器-->
  <servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--在servlet容器加载时就初始化,并且优先级为1-->
    <!--<load-on-startup>1</load-on-startup>-->
  </servlet>
  <servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!--编码格式 放在所有过滤器之前-->
  <filter>
    <filter-name>Encoding</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>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>Encoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--rest风格  处理隐藏域-->
  <filter>
    <filter-name>Hidden</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>Hidden</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

使ajax可以发送  PUT,delete形式
  <filter>
    <filter-name>HttpPutFormContentFilter</filter-name>
    <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>HttpPutFormContentFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

springmvc

 <!--扫描包-->
    <context:component-scan base-package="ssm" use-default-filters="false">
                <!--只扫描控制器-->
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" ></context:include-filter>
    </context:component-scan>

        <!--将springmvc不能处理的交给  tomcat-->
    <mvc:default-servlet-handler></mvc:default-servlet-handler>
    <mvc:resources mapping="/jquery/**" location="/static/js/"></mvc:resources>
    <mvc:resources mapping="/css/**" location="/static/bootstrap-3.3.7-dist/css/"></mvc:resources>
    <mvc:resources mapping="/bootstrap/**" location="/static/bootstrap-3.3.7-dist/js/"></mvc:resources>
    <mvc:resources mapping="/fonts/**" location="/static/bootstrap-3.3.7-dist/fonts/"></mvc:resources>
            <!--前端解析器-->
    <bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀和后缀-->
        <property name="prefix" value="/WEB-INF/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>



    <!--<context:annotation-config></context:annotation-config>-->
    <mvc:annotation-driven></mvc:annotation-driven>

    <!--自定义拦截器-->
    <!--<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/Employee/save_employee"/>
            <bean class="ssm.utils.MyIncepter"></bean>
        </mvc:interceptor>
    </mvc:interceptors>-->

上面配置了<mvc:servlet-default-handle>就不用配置json的映射器(下面这两个)了
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <!-- json视图拦截器,读取到@ResponseBody的时候去配置它-->
                <ref bean="mappingJacksonHttpMessageConverter"/>
            </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>

spring的配置文件

<context:component-scan base-package="ssm">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:exclude-filter>
    </context:component-scan>
        <!--数据源   及事务控制-->
    <context:property-placeholder location="classpath:c3p0.properties"></context:property-placeholder>
    <bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
        <property name="driverClass" value="${jdbc.driverClass}"></property>
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>



    <!--和mybaties的整合-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
                <!--mybaties的全局配置文件-->
        <property name="configLocation" value="classpath:mybaties.xml"></property>
        <property name="dataSource" ref="pooledDataSource"></property>
        <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
    </bean>

        <!--配置批量处理的sqlsession-->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
                <!--有参构造-->
        <constructor-arg name="sqlSessionFactory"  ref="sqlSessionFactory"/>
        <constructor-arg name="executorType" value="BATCH"></constructor-arg>
    </bean>
    <!--配置扫面器   扫描mybaties接口 将mapper接口注入到  Ioc容器中-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="ssm.dao.mymapper"></property>
    </bean>

    <!--事务控制-->
    <bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!--控制事务源-->
        <property name="dataSource" ref="pooledDataSource"></property>
     </bean>
    <!--基于注解的事务配置-->
    <aop:config>

        <aop:pointcut id="aoppoint" expression="execution(* ssm.service..*(..))"></aop:pointcut>
        <aop:advisor advice-ref="txmanager" pointcut-ref="aoppoint"></aop:advisor>
    </aop:config>
    <tx:advice id="txmanager" transaction-manager="TransactionManager">
        <tx:attributes>
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>

index页面:

表单:略

 //保存
        $('#emp_save_btn').click(function () {
            if(!form_validate){
                return false;
            }
            //判断  服务器判断
            if($('#emp_save_btn').attr('ajax-va') == 'error'){
                return false;
            }
            $.ajax({
                // 报了415错误   jquery-1.12.4.min.js:4 POST http://localhost:8080/Employee/save_employee 415 (Unsupported Media Type)
                url:"${pageContext.request.contextPath}/Employee/save_employee",
                //解决:  添加dataType
                dataType:"json",
                type:"POST",
                data:$('#empAddModal form').serialize(),
                // data:$('#empAddModal form').serialize(),

                // ContentType:"application/x-www-form-urlencoded",
                function 为回调函数,result为 从服务器传回的结果
                success: function(result){
                    //员工保存成功,关闭模态框
                    if(result.code == 100){
                        console.log('收到成功信息');
                        $('#empAddModal').modal('hide');
                        to_page(totalRecord);
                    }else{
                        console.log('收到失败信息')
                        console.log(result);
                        // $('#empAddModal form').addClass("has-error");
                        var fe=result.extend.errorsfiled;
                        if (fe.ename) {
                            show_validate_msg('#empName_add_input','error',fe.ename);
                        }
                        if (fe.email){
                            show_validate_msg('#email_add_input','error',fe.email);
                        }
                        if(fe.Enumber){
                            show_validate_msg('#email_add_input','error',fe.Enumber);
                        }
                    }
                 },
                error:function (result) {
                    alert(result);
                    console.log(result)
                }
            });

        });

控制器:

@Controller
@RequestMapping("Employee")
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;
```...

//添加员工 @RequestBody只能接收 json?
@ResponseBody
@RequestMapping(value="/save_employee",method = RequestMethod.POST)
public Msg save_employee(@Valid Employee employee, BindingResult result){
System.out.println(“信息”+employee);

    if (result.hasErrors()) {
        //校验失败 在模态框中返回信息
        Map<String, Object> map = new HashMap<>();
        List<FieldError> errors = result.getFieldErrors();
        for (FieldError er : errors) {
            //错误字段    错误信息
            System.out.println(er.getField() + " : " + er.getDefaultMessage());
            map.put(er.getField(), er.getDefaultMessage());
        }
        return Msg.fail().add("errorsfiled",map);
    }else {
        this.employeeService.save_employee(employee);
        return Msg.success().add("code", "成功");
    }
}

整合中遇到的问题

标题

发布了6 篇原创文章 · 获赞 5 · 访问量 357

猜你喜欢

转载自blog.csdn.net/qq_42840001/article/details/84729162
今日推荐