03.搭建SSM

1.创建项目
在Eclipse中创建项目,右键解决报错即可导入MyEclipse中,防止Myeclipse中总是报错问题
2.导包(以后可能会补充)


org.springframework
spring-webmvc
3.2.8.RELEASE


org.springframework
spring-jdbc
3.2.8.RELEASE


org.springframework
spring-orm
3.2.8.RELEASE



mysql
mysql-connector-java
5.1.37

<dependency>
  <groupId>commons-dbcp</groupId>
  <artifactId>commons-dbcp</artifactId>
  <version>1.4</version>
</dependency>
<!--2.3 导入Mybatis相关的jar包-->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>1.3.1</version>
</dependency>

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.2.8</version>
</dependency>
<!--2.4 导入jstl测试包-->
<dependency>
  <groupId>jstl</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>
<!--2.5 导入json相关的jar包-->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.2.3</version>
</dependency>

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.2.3</version>
</dependency>

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.2.3</version>
</dependency>
<!--2.6 导入junit相关的jar包-->
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <!-- <scope>test</scope>测试用,不复制到WEB-INF里面 -->
  <scope>test</scope>
</dependency>
<!--2.7导入文件上传和下载的jar包-->
<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3.3</version>
</dependency>
<!--2.8导入log4j相关的jar包-->
<dependency>
  <groupId>org.apache</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.15</version>
</dependency>
<!--2.9导入commons基础包-->
 <dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.5</version>
</dependency>
<dependency>
  <groupId>commons-lang</groupId>
  <artifactId>commons-lang</artifactId>
  <version>2.6</version>
</dependency>
<!--2.10javax/servlet/ServletContext的jar包-->
</dependency>
    <dependency>  
    <groupId>javax.servlet</groupId>  
    <artifactId>javax.servlet-api</artifactId>  
    <version>3.1.0</version>  
    <scope>provided</scope>  
</dependency>  

3.解决maven报错的系列问题
One or more constraints have not been satisfied. SSMDemo line 1 Maven Java EE Configuration Problem
JAX-RS (REST Web Services) 2.0 requires Java 1.7 or newer. SSMDemo line 1 Maven Java EE Configuration Problem
在pom.xml中添加如下:指定maven的jdk版本为1.7



org.apache.maven.plugins
maven-compiler-plugin
3.0

1.7
1.7




4.配置web.xml,配置了一个转发器和编码过滤器


DispatcherServlet
DispatcherServlet
org.springframework.web.servlet.DispatcherServlet

contextConfigLocation
classpath:spring-.xml

1


DispatcherServlet
.do


CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter

encoding
utf-8



CharacterEncodingFilter
/

注意路径位置:classpath:spring-
.xml
5.整合SpringMVC
添加Spring-MVC.xml的配置文件夹
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\spring-mvc.xml
(1)注意扫描接口包的位置base-package="com.git.user.controller"
<context:component-scan base-package="com.git.user.controller"></context:component-scan>
(2)注意转发位置:value="/web/"和value=".jsp"


6.创建控制器类UserController.java位置路径与Spring-mvc扫描路径相互匹配(com.git.user.controller.UserController.java)
编写如下代码,返回到主页index.jsp
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/index")
public String showIndex(){
return "index";
}
(1)注意添加@Controller注解
(2)注意规划请求路径@RequestMapping("/user")
7.创建测试用的jsp页面,注意路径为/webapp/web/index.jsp
8.测试SpringMVC的整合
启动Tomcat,访问Http://localhost:8080/user/index.do是否正常打开页面,正常打开,则整合成功.
9.配置数据库连接参数的配置文件(db.properties)
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\db.properties
10.创建spring管理数据库的配置文件(Spring-db.xml))
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\spring-db.xml
(1)注意引入位置:location="classpath:db.properties"
<util:properties id="dbConfig" location="classpath:db.properties"></util:properties>
(2)注意自动扫描xml文件的位置value="classpath:mappers/*.xml"

(3)注意扫描接口包的位置value="com.git.user.mapper"

11.创建UserMapper.java类.空接口类,防止测试spring和Mybatis整合时报错.
12.创建userMapping.xml映射文件,空文件,防止测试spring和Mybatis整合时报错
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\userMapper.xml
(1)注意扫描接口类的位置namespace="com.git.user.mapper.UserMapper"

13.测试spring与Mybatis的整合,建立测试类:
AbstractApplicationContext ctx;
UserMapper userMapper;
@Before
public void init(){
ctx=new ClassPathXmlApplicationContext("spring-db.xml");
userMapper=ctx.getBean("userMapper", UserMapper.class);
}
@After
public void destory(){
ctx.close();
}
@Test
public void testDbcpConnection(){
BasicDataSource bds=ctx.getBean("bds", BasicDataSource.class);
System.out.println(bds);
}
输出结果为:
org.apache.commons.dbcp.BasicDataSource@1bc63a3
即表示整合成功!
14.新建实体类bean文件User.java(位置:com.git.User.bean.User.java)
注意需要序列号
15.新建ResponseResult类,
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\ResponseResult.java
16.编写UserMapper.java接口类,编写抽象方法.例如:
public void insertUser(User user);
17.编写userMapping.xml映射文件.例如:

insert into user(
id,name,pwd,ceatedatetime,modifydatetime
)values(
#{id},#{name},#{pwd},#{createDateTime},#{modifyDateTime}
)

18.编写测试类,测试是否能插入数据到数据库中.例如:
@Test
public void testInsertUser(){
User user=new User();
user.setId("ABC");
user.setName("小明");
user.setPwd("123456");
user.setCreateDateTime(new Date());
user.setModifyDateTime(new Date());
userMapper.insertUser(user);
}
19.检查数据库中是否插入了数据,插入了数据,则表示eclipse与数据库通过Mybatis接通完毕
测试:注意在ctx=new ClassPathXmlApplicationContext("spring-db.xml");中添加"spring-mvc.xml"
20.编写业务层service接口UserService.java定义接口方法.例如
public void insertUser(User user);
21.编写业务层实现类UserServiceImpl.java实现UserService接口
@Service("userService")
public class UserServiceImpl implements UserService{
@Resource(name="userMapper")
private UserMapper userMapper;

@Override
public void insertUser(User user) {
	// TODO Auto-generated method stub
	userMapper.insertUser(user);
}

}
注意两点,
(1)注意添加注解@Service("userService")
(2)注意引入对象实例是用的@Resource(name="userMapper")

21.引入Spring管理service业务层的配置文件
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\spring-service.xml
注意扫描路径:base-package="com.git.user"与管理的service业务层的包相互匹配
22.测试业务层是否已经贯通,在测试类中测试,
@Test
public void testServiceInsert(){
User user=new User();
user.setId("DEF");
user.setName("小红");
user.setPwd("123456");
user.setCreateDateTime(new Date());
user.setModifyDateTime(new Date());
userService.insertUser(user);
}
注意:
(1)声明对象UserService userService;
(2)管理配置文件中添加ctx=new ClassPathXmlApplicationContext("spring-db.xml","spring-mvc.xml","spring-service.xml");中的"spring-service.xml"
(3)获取其对象userService=ctx.getBean("userService", UserService.class);
检查数据库是否插入数据,若插入了数据,则表示业务层与数据库已经贯通
23.重新修改index.jsp.添加一个注册表单,测试注册功能是否能正常工作;添加代码如下:


姓名:
密码:


js代码如下:
function regist() {
$.ajax({
url:"regist.do",
type:"post",
datatype:"json",
data:{
name:$("#name").val(),
pwd:$("#pwd").val()
},
success:function(obj){
alert(obj.message)
}
})
}
(1)注意引入js文件
24.控制器端,在UserController.java中添加注册对应的功能动作如下:
@ResponseBody
@RequestMapping("/regist.do")
public ResponseResult regist(@Param("name")String name,@Param("pwd")String pwd){
System.out.println(name+";"+pwd);
ResponseResult result=new ResponseResult();
result.setState(ResponseResult.STATE_OK);
result.setMessage("请求成功");
return result;
}
(1)注意返回的是实体,需要注解@ResponseBody
(2)注意请求路径为,需要注解:@RequestMapping("/regist.do")
(3)注意接收参数,需要注解@Param("name")String name,@Param("pwd")String pwd.其中name和pwd必须与jsp中的名字相对应
25.在index.jsp注册页面,测试,服务器端能否接收到前端的注册信息.如果能接收到,证明注册业务的前后端已经贯通.
26.继续在服务器端完善代码如下:
@ResponseBody
@RequestMapping("/regist.do")
public ResponseResult regist(@Param("name")String name,@Param("pwd")String pwd){
System.out.println(name+";"+pwd);
ResponseResult result=new ResponseResult();
User user=new User();
user.setId("FRG");
user.setName(name);
user.setPwd(pwd);
user.setCreateDateTime(new Date());
user.setModifyDateTime(new Date());
userService.insertUser(user);
result.setState(ResponseResult.STATE_OK);
result.setMessage("请求成功");
return result;
}
27.在注册页面进行注册,若能在数据库中插入,即表示整个流程贯通,环境搭建完毕
28.拦截器
创建拦截器类LoginInterceptor.java(位置:com.git.user.interceptor),继承HandlerInterceptor,代码如下:
public class LoginInterceptor implements HandlerInterceptor{

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception arg3) throws Exception {
	// TODO Auto-generated method stub
	
}

@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception {
	// TODO Auto-generated method stub
	
}

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
	HttpSession session=request.getSession();
	if(session.getAttribute("uid")!=null){
		return true;
	}else{
		String url=request.getContextPath()+"/user/login.do";
		response.sendRedirect(url);
		return false;
	}
	
}

29.在spring-mvc中展开拦截器规则即可
30.配置log4j
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\log4j.properties
log4j的使用:
在类里添加:private static final Logger logger=Logger.getLogger(UserServiceImpl.class);

posted @ 2022-09-06 22:59  NIANER2011  阅读(29)  评论(0编辑  收藏  举报