#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH:mm:ss}][%c]%m%n
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: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-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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
spring-db.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: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-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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
spring-tx.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:p=“http://www.springframework.org/schema/p”
xmlns:context=“http://www.springframework.org/schema/context”
xmlns:aop=“http://www.springframework.org/schema/aop”
xmlns:tx=“http://www.springframework.org/schema/tx”
xmlns:mvc=“http://www.springframework.org/schema/mvc”
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/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
<bean id=“transactionManager”
class=“org.springframework.jdbc.datasource.DataSourceTransactionManager”>
aop:config
<aop:pointcut id=“allServiceMethod” expression=“execution(* com.chillax.service..(…))”/>
<aop:advisor pointcut-ref=“allServiceMethod” advice-ref=“TxAdvice” />
</aop:config>
<tx:advice id=“TxAdvice” transaction-manager=“transactionManager”>
tx:attributes
<tx:method name=“*” propagation=“REQUIRED” rollback-for=“java.lang.Exception”/>
</tx:attributes>
</tx:advice>
3、在WEB-INF文件夹下添加/修改以下配置文件
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: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-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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<mvc:annotation-driven />
mvc:default-servlet-handler/
<context:component-scan base-package=“com.chillax.controller” />
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns=“http://java.sun.com/xml/ns/javaee”
xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd”
version=“3.0”>
Archetype Created Web Application
/index.jsp
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
true
encoding
UTF-8
encodingFilter
/*
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
/WEB-INF/spring-mvc.xml
1
true
SpringMVC
/
4、在src/main/java下添加如下包和类
UserController.java
package com.chillax.controller;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.chillax.dto.User;
import com.chillax.service.IUserService;
@Controller
@RequestMapping(“/user”)
public class UserController {
@Resource
private IUserService userService;
@RequestMapping(“/userList”)
public String userList(HttpServletRequest request,Model model){
List uList = userService.getAllUser();
model.addAttribute(“uList”, uList);
return “userList”;
}
@RequestMapping(“/showUser”)
public String showUser(HttpServletRequest request,Model model){
int userId = Integer.parseInt(request.getParameter(“id”));
User user = userService.getUserById(userId);
model.addAttribute(“user”, user);
return “showUser”;
}
@RequestMapping(“/addUserUI”)
public String addUserUI(){
return “addUser”;
}
@RequestMapping(“/addUser”)
public String addUser(HttpServletRequest request,Model model){
User user = new User();
user.setName(String.valueOf(request.getParameter(“name”)));
user.setPassword(String.valueOf(request.getParameter(“password”)));
user.setAge(Integer.parseInt(String.valueOf(request.getParameter(“age”))));
userService.addUser(user);
return “redirect:/user/userList”;
}
}
IUserDao.java
package com.chillax.dao;
import java.util.List;
import java.util.Map;
import com.chillax.dto.User;
public interface IUserDao {
public User queryByPrimaryKey(Integer id);
public List getAllUser();
public void insertUser(User user);
public void insertUserByBatch(List list);
public void deleteByPrimaryKey(Integer id);
public void delteUserByBatch(Map<String,Object> params);
public void updateByPrimaryKey(User user);
}
User.java
package com.chillax.dto;
public class User {
private Integer id;
private String name;
private String password;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password == null ? null : password.trim();
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>id, name, password, age
<select id=“queryByPrimaryKey” resultMap=“BaseResultMap”
parameterType=“java.lang.Integer”>
select
from user
where id = #{id,jdbcType=INTEGER}
select
from user
insert into user
id,
name,
password,
age,
#{id,jdbcType=INTEGER},
#{name,jdbcType=VARCHAR},
#{password,jdbcType=VARCHAR},
#{age,jdbcType=INTEGER},
insert into USER
(ID,
NAME,
PASSWORD,
AGE)
select A.* from
(
select
#{user.id,jdbcType=INTEGER},
#{user.name,jdbcType=VARCHAR},
#{user.password,jdbcType=VARCHAR},
#{user.age,jdbcType=INTEGER}
from dual
) A
delete from user
where id = #{id,jdbcType=INTEGER}
delete from user
where id IN
#{ids,jdbcType=DECIMAL}
update user
name = #{name,jdbcType=VARCHAR},
password = #{password,jdbcType=VARCHAR},
age = #{age,jdbcType=INTEGER},
where id = #{id,jdbcType=INTEGER}
IUserService.java
package com.chillax.service;
import java.util.List;
import com.chillax.dto.User;
public interface IUserService {
public User getUserById(int userId);
public void insertUser(User user);
public void addUser(User user);
public List getAllUser();
}
UserServiceImpl.java
package com.chillax.service.Impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.chillax.dao.IUserDao;
import com.chillax.dto.User;
import com.chillax.service.IUserService;
@Service(“userService”)
public class UserServiceImpl implements IUserService {
@Resource
private IUserDao userDao;
public User getUserById(int userId) {
return userDao.queryByPrimaryKey(userId);
}
public void insertUser(User user) {
userDao.insertUser(user);
}
public void addUser(User user) {
userDao.insertUser(user);
}
@Override
public List getAllUser() {
return userDao.getAllUser();
}
}
5、在WEB-INF文件夹下创建jsp文件夹,并添加userList.jsp,showUser.jsp、addUser.jsp
userList.jsp
<%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%>
<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+“😕/”+request.getServerName()+“:”+request.getServerPort()+path+“/”;
%>
<c:forEach items=“${uList }” var=“u”>
用户名称:${u.name}
用户年龄:${u.age }
</c:forEach>
addUser.jsp
<%@ page language=“java” import=“java.util.*” pageEncoding=“UTF-8”%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+“😕/”+request.getServerName()+“:”+request.getServerPort()+path+“/”;
%>
userName:
password:
age:
showUser.jsp
<%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+“😕/”+request.getServerName()+“:”+request.getServerPort()+path+“/”;
%>
${user.name }
6、创建数据库,并创建表
create database maventest;
use maventest;
CREATE TABLE user
(
id
int(12) NOT NULL AUTO_INCREMENT,
name
varchar(50) NOT NULL,
password
varchar(50) NOT NULL,
age
int(9) NOT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
insert into user
(id
,name
,password
,age
) values (1,‘admin’,‘admin’,22);
7、整个项目文件结构图
8、部署发布项目,进行测试
至此,框架搭建完成。
5.常见问题
======
问题1:pom.xml文件里的代码到哪里找?
解答:http://www.mvnrepository.com/
问题2:新建MAVEN项目过程中,出现下图错误?
**解决:**在MyEclipse的安装目录找到myeclipse.ini,将分配的堆内存加大
问题3:新建完工程后出现以下错误?
**解答:**在pom.xml添加以下代码即可,添加完代码就会自动下载好jar包
问题4:修改pom.xml时出现以下错误?
**解答:**这是由于jar包没有正确下载导致的,找到错误的jar包位置,将文件夹里的文件删掉,将pom.xml里该jar包的配置代码删除后再重新写上,让MAVEN重新下载jar包即可。
问题5:出现以下错误?
解答:
问题6:出现以下错误?
**解答:**将项目的jre版本换成1.7或者以上的版本即可
问题7:出现以下错误,并且已经确定jre是1.7版本或者以上版本。
**解答:**在pom.xml文件的的标签中加入以下代码,然后Update Project(参照问题5)
Maven_Project
org.apache.maven.plugins
maven-compiler-plugin
2.3.2
1.71.7
问题8:访问报错
**解答:**请确认地址中的项目,跟项目中的Web Context-root地址一致。
问题9:直接导入代码报错
**解答:**如果想直接导入代码需要先做文章开头的1和2两步,即用一个自己的新的仓库来存储jar包,不然容易跟已有的仓库配置冲突,导致jar包无法下载或下载不全。下图是我导入的过程,下载jar的过程比较慢,并且下载完了还报错,但是报错并不影响项目的正确运行。
推荐阅读
====
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/2e928a1864cede6c6725e09433068df3.jpeg)
最后
看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。
开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题。
注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友
互联网工程师必备的面试1000题
而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
库配置冲突,导致jar包无法下载或下载不全。下图是我导入的过程,下载jar的过程比较慢,并且下载完了还报错,但是报错并不影响项目的正确运行。
推荐阅读
====
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-ePH3py5j-1713431016736)]
[外链图片转存中…(img-jZVdTqpm-1713431016737)]
[外链图片转存中…(img-RmP0w1sg-1713431016737)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/2e928a1864cede6c6725e09433068df3.jpeg)
最后
看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。
开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题。
注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友
[外链图片转存中…(img-1ib5kPXX-1713431016737)]
互联网工程师必备的面试1000题
而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。
[外链图片转存中…(img-owrvW5iR-1713431016738)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!