SSM框架整合(Spring、SpringMVC,2024年最新2024阿里+头条+腾讯等大厂Java笔试题分享

#??DEBUG???

log4j.logger.DEBUGA=DEBUG

log4j.appender.DEBUGA=org.apache.log4j.DailyRollingFileAppender

log4j.appender.DEBUGA.layout=org.apache.log4j.PatternLayout

log4j.appender.DEBUGA.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n

log4j.appender.DEBUGA.datePattern=yyyy-MM-dd’.log’

log4j.appender.DEBUGA.Threshold = DEBUG

log4j.appender.DEBUGA.append=true

log4j.appender.DEBUGA.File=d:/log/debug_log.log

#??sql??

log4j.logger.com.ibatis=DEBUG

log4j.logger.java.sql.ResultSet=INFO

log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG

log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG

log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG

log4j.logger.java.sql.Connection=DEBUG

log4j.logger.java.sql.Statement=DEBUG

log4j.logger.java.sql.PreparedStatement=DEBUG




**mabatis-config.xml**



<?xml version="1.0" encoding="UTF-8" ?>
<settings>

    <setting name="logImpl" value="STDOUT_LOGGING"/>

</settings>



<typeAliases>

    <package name="com.wanshi.bean"/>

</typeAliases>



<mappers>

    <mapper resource="com/wanshi/mapper/UserInfoMapper.xml"/>

    <mapper resource="com/wanshi/mapper/GoodsMapper.xml"/>

</mappers>



**spring-dao.xml**



<?xml version="1.0" encoding="UTF-8"?>

<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"

   xsi:schemaLocation="http://www.springframework.org/schema/beans

   http://www.springframework.org/schema/beans/spring-beans.xsd

   http://www.springframework.org/schema/context

   https://www.springframework.org/schema/context/spring-context.xsd">



<!-- 配置整合mybatis -->

<!-- 1.关联数据库文件 -->

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

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

<!-- 2.数据库连接池 -->

<!--数据库连接池

    dbcp 半自动化操作 不能自动连接

    c3p0 自动化操作(自动的加载配置文件 并且设置到对象里面)

-->

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

    <!-- 配置连接池属性 -->

    <property name="driverClass" value="${jdbc.driver}"/>

    <property name="jdbcUrl" value="${jdbc.url}"/>

    <property name="user" value="${jdbc.username}"/>

    <property name="password" value="${jdbc.password}"/>



    <!-- c3p0连接池的私有属性 -->

    <property name="maxPoolSize" value="30"/>

    <property name="minPoolSize" value="10"/>

    <!-- 关闭连接后不自动commit -->

    <property name="autoCommitOnClose" value="false"/>

    <!--获取连接超时时间 -->

    <property name="checkoutTimeout" value="10000"/>

    <!-- 当获取连接失败重试次数 -->

    <property name="acquireRetryAttempts" value="2"/>

</bean>



<!-- 3.配置SqlSessionFactory对象 -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

    <!-- 注入数据库连接池 -->

    <property name="dataSource" ref="dataSource"/>

    <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->

    <property name="configLocation" value="classpath:mybatis-config.xml"/>

</bean>



<!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 -->

<!--解释 :https://www.cnblogs.com/jpfss/p/7799806.html-->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

    <!-- 注入sqlSessionFactory -->

    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

    <!-- 给出需要扫描Dao接口包 -->

    <property name="basePackage" value="com.wanshi.mapper"/>

</bean>



**spring-service.xml**



<?xml version="1.0" encoding="UTF-8"?>

<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"

   xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">

<!-- 扫描service相关的bean -->

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



<!--BookServiceImpl注入到IOC容器中-->

<bean id="UserInfoServiceImpl" class="com.wanshi.service.impl.UserInfoServiceImpl">

    <property name="userInfoMapper" ref="userInfoMapper"/>

</bean>

<bean id="GoodsServiceImpl" class="com.wanshi.service.impl.GoodsServiceImpl">

    <property name="goodsMapper" ref="goodsMapper"/>

</bean>



<!-- 配置事务管理器 -->

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

    <!-- 注入数据库连接池 -->

    <property name="dataSource" ref="dataSource" />

</bean>



**spring-mvc.xml**



<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=“http://www.springframework.org/schema/beans”

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xmlns:mvc="http://www.springframework.org/schema/mvc"

   xmlns:context="http://www.springframework.org/schema/context"

   xsi:schemaLocation="http://www.springframework.org/schema/beans

   http://www.springframework.org/schema/beans/spring-beans.xsd

   http://www.springframework.org/schema/mvc

   http://www.springframework.org/schema/mvc/spring-mvc.xsd

   http://www.springframework.org/schema/context

   http://www.springframework.org/schema/context/spring-context.xsd">



<!--    1.注解驱动-->

<mvc:annotation-driven/>

<!--    2.静态资源过滤-->

<mvc:default-servlet-handler/>

<!--    3.扫描包:controller-->

<context:component-scan base-package="com.wanshi.controller"/>

<!--    4.视图解析器-->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

    <property name="prefix" value="/WEB-INF/jsp/"/>

    <property name="suffix" value=".jsp"/>

</bean>



<mvc:interceptors>

    <mvc:interceptor>

        <mvc:mapping path="/**"/>

        <bean id="loginInterceptor" class="com.wanshi.interceptor.LoginInterceptor"/>

    </mvc:interceptor>

</mvc:interceptors>



**applicationContext.xml**



<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=“http://www.springframework.org/schema/beans”

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://www.springframework.org/schema/beans

   http://www.springframework.org/schema/beans/spring-beans.xsd">



<import resource="classpath:spring-dao.xml"/>

<import resource="classpath:spring-service.xml"/>

<import resource="classpath:spring-mvc.xml"/>



[]( )核心源代码

========================================================================



* * *



**UserController**



package com.wanshi.controller;

import com.wanshi.bean.UserInfo;

import com.wanshi.service.UserInfoService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpSession;

@Controller

@RequestMapping(“/user”)

public class UserController {

@Autowired

@Qualifier("UserInfoServiceImpl")

private UserInfoService userInfoService;



@RequestMapping("/register")

public String register() {

    return "register";

}



@RequestMapping("/registerPost")

public String registerPost(UserInfo userInfo){

    userInfoService.save(userInfo);

    return "login";

}



@RequestMapping("/loginPost")

public String loginPost(HttpSession session,UserInfo userInfo){

    UserInfo u1 = userInfoService.get(userInfo);

    session.setAttribute("user", u1);

    if (u1 != null) {

        return "redirect:/goods/list";

    }

    return "register";

}

}




**GoodsController**



package com.wanshi.controller;

import com.wanshi.bean.Goods;

import com.wanshi.bean.Page;

import com.wanshi.service.GoodsService;

import org.apache.commons.lang3.StringUtils;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller

@RequestMapping(“/goods”)

public class GoodsController {

@Autowired

@Qualifier("GoodsServiceImpl")

private GoodsService goodsService;



private static final Integer PAGE_SIZE = 2;



@RequestMapping("/list")

public String list(String pageNumb, String buyerName, Model model) {

    Integer pageNum = 1;

    if (pageNumb != null && !pageNumb.equals("")) {

        pageNum = Integer.valueOf(pageNumb);

    }

    Page<Goods> pager = goodsService.list(pageNum, PAGE_SIZE, buyerName);

    model.addAttribute("pager", pager);

    model.addAttribute("buyerName", buyerName);

    return "goods/list";

}



@RequestMapping("/add")

public String add(){

    return "goods/add";

}



@RequestMapping("/addGoods")

public String addGoods(Goods goods){

    goodsService.save(goods);

    return "redirect:/goods/list";

}



@RequestMapping("/edit/{orderId}")

public String edit(@PathVariable("orderId") Integer orderId, Model model) {

    Goods goods = goodsService.get(orderId);

    model.addAttribute("goods", goods);

    return "goods/edit";

}



@RequestMapping("/editPost")

public String editPost(Goods goods) {

    goodsService.update(goods);

    return "redirect:/goods/list";

}



@RequestMapping("/del/{orderId}")

public String del(@PathVariable("orderId") Integer orderId) {

    goodsService.delete(orderId);

    return "redirect:/goods/list";

}

}




**LoginInterceptor**



package com.wanshi.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class LoginInterceptor implements HandlerInterceptor {

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

    //1.对登录,注册,风格直接放行

    //获取请求的uri地址

    String uri = request.getRequestURI();

    if (uri.contains("login") || uri.contains("register")) {

        return true;

    }



    //2.进行session验证

    Object user = request.getSession().getAttribute("user");

    if (user == null) {

        request.getRequestDispatcher("/WEB-INF/jsp/login.jsp")

                .forward(request, response);

        return false;

    }

    return true;

}

}




**Page分页类**



package com.wanshi.bean;

import java.util.ArrayList;

import java.util.List;

/**

  • 该类的使用方法必须严格按照一下流程

  • 1 计算得到 总记录数 rowCount

  • 2 使用带参构造方法初始化,例如 Page page1 = new Page(3, 5, 57 );

  • 3 设置当前页记录 page1.setList(list1 );

  • @author Administrator

  • @param

*/

public class Page {

/**

 * 当前页码前的页码数

 */

private static final int BeforePageNumbCount =  4;



/**

 * 当前页码后的页码数

 */

private static final int AfterPageNumbCount = 3;



/**

 * 当前页码

 */

private int currPage;

/**

 * 总记录数

 */

private int rowCount;

/**

 * 每页记录数

 * 该参数就是 limit arg1,arg2 中的第2个参数 arg2

 */

private int pageSize;

/**

 * 总页数

 */

private int pageCount;

/**

 * 前1页页码

 */

private int prevPageNumb;

/**

 * 后一页页码

 */

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

面试是跳槽涨薪最直接有效的方式,马上金九银十来了,各位做好面试造飞机,工作拧螺丝的准备了吗?

掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

img-MfY9x4U2-1712768521960)]
[外链图片转存中…(img-CZk54VBr-1712768521961)]
[外链图片转存中…(img-JYPtemTy-1712768521961)]
[外链图片转存中…(img-5Js2apzu-1712768521962)]
[外链图片转存中…(img-Uq7hXXmx-1712768521962)]
[外链图片转存中…(img-e1rAOSGW-1712768521962)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-pLZtegfP-1712768521963)]

最后

面试是跳槽涨薪最直接有效的方式,马上金九银十来了,各位做好面试造飞机,工作拧螺丝的准备了吗?

掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。

[外链图片转存中…(img-Nn4HT5gR-1712768521963)]

[外链图片转存中…(img-fyBXFddp-1712768521963)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-pO1IiGHz-1712768521964)]

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值