SSM框架示例(适合新手)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36537546/article/details/79535556

因本人也是初学者。。有什么不足的地方,请多指教!!

简单的实现增删改查功能   

(因为时间原因。。没有加注解。。详细注解在案例里边。。有兴趣的朋友可以看一下)

案例下载(有注解):https://download.csdn.net/download/qq_36537546/10283007

首先,先看一下我的工程目录

1.(1.)User  我们的Bean  包名:lx.entity(根据自己的习惯定义就可以)

package lx.entity;

public class User {
	private int uid;
	private String uname;
	private int upass;
	public int getUid() {
		return uid;
	}
	public void setUid(int uid) {
		this.uid = uid;
	}
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public int getUpass() {
		return upass;
	}
	public void setUpass(int upass) {
		this.upass = upass;
	}
	public User(int uid, String uname, int upass) {
		super();
		this.uid = uid;
		this.uname = uname;
		this.upass = upass;
	}
	public User() {
		// TODO Auto-generated constructor stub
	}
}

2.UserDao  配置接口   包名:lx.dao(根据自己的习惯定义就可以)

package lx.dao;

import java.util.List;

import lx.entity.User;

public interface UserDao {
	public List<User> findAll();
	public int save(User u);
	public int delete(int id);
	public int update(User u);
	public User findById(int id);
}

(2)配置  My Batis 配置文件 UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="lx.dao.UserDao">	

	<select id="findAll" resultType="User">
		select * from user
	</select>
	
	<insert id="save" parameterType="User">
		insert into user(uname,upass) values (#{uname},#{upass})
	</insert>

	<delete id="delete" parameterType="int">
		delete from user where uid=#{uid}
	</delete>

	<update id="update" parameterType="User">
		update user set uname=#{uname},upass=#{upass} where uid=#{uid}
	</update>

	<select id="findById" parameterType="int" resultType="User">
         select * from user where uid=#{uid}
    </select>
    
</mapper>

3.UserDaoImpl  配置实现类  包名:lx.dao.impl(根据自己的习惯定义就可以)

SSM采用注解的方式进行扫描,不需要写复杂的步骤,只需要用对象获取他的方法

package lx.dao.impl;

import java.util.List;

import lx.dao.UserDao;
import lx.entity.User;

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

public class UserDaoImpl implements UserDao{
	@Autowired
	private UserDao user;

	public List<User> findAll() {
		// TODO Auto-generated method stub
		return user.findAll();
	}

	public int save(User u) {
		// TODO Auto-generated method stub
		return user.save(u);
	}

	public int delete(int id) {
		// TODO Auto-generated method stub
		return user.delete(id);
	}

	public int update(User u) {
		// TODO Auto-generated method stub
		return user.update(u);
	}

	public User findById(int id) {
		// TODO Auto-generated method stub
		return user.findById(id);
	}
	
}

4.UserSerivce 配置我们的业务逻辑层  包名:lx.service(根据自己的习惯定义就可以)

    service层的接口与dao层一样

package lx.service;

import java.util.List;

import lx.entity.User;

public interface UserSerivce {
	public List<User> findAll();
	public boolean save(User u);
	public boolean delete(int id);
	public boolean update(User u);
	public User findById(int id);
}

5.UserServiceImpl  包名:lx.service.Impl(根据自己的习惯定义就可以)

package lx.service.impl;

import java.util.List;

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

import lx.dao.UserDao;
import lx.entity.User;
import lx.service.UserSerivce;

@Service
public class UserServiceImpl implements UserSerivce{
	@Autowired
	private UserDao usi;

	public List<User> findAll() {
		// TODO Auto-generated method stub
		return usi.findAll();
	}

	public boolean save(User u) {
		// TODO Auto-generated method stub
		int a=usi.save(u);
		if(a==1){
			return true;
		}else{
			return false;
		}
	}

	public boolean delete(int id) {
		// TODO Auto-generated method stub
		int a=usi.delete(id);
		if(a==1){
			return true;
		}else{
			return false;
		}
	}

	public boolean update(User u) {
		// TODO Auto-generated method stub
		int a=usi.update(u);
		if(a==1){
			return true;
		}else{
			return false;
		}
	}

	public User findById(int id) {
		// TODO Auto-generated method stub
		return usi.findById(id);
	}
	
}

6.UserAction   包名:lx.action(根据自己的习惯定义就可以)

package lx.action;

import lx.entity.User;
import lx.service.UserSerivce;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class UserAction {
	@Autowired
	private UserSerivce user;
	
	@RequestMapping(value="showuser")
	public ModelAndView find(){
		//先new一个ModelAndView对象
		ModelAndView mav=new ModelAndView();
		//以键值队的形式赋值   然后用对象调用方法 
		mav.addObject("user",user.findAll());
		//要跳转的页面
		mav.setViewName("list_user");
		//return出来你new的对象
		return mav;
	}
	//增加
	@RequestMapping(value="saveuser")
	public ModelAndView save(User u){
		user.save(u);
		return new ModelAndView("redirect:/showuser.do"); 
	}
	//删除
	@RequestMapping(value="deleteuser")
	public ModelAndView delete(int id){
		user.delete(id);
		return new ModelAndView("redirect:/showuser.do");
	}
	//预修改
	@RequestMapping(value="preupdateuser")
	public ModelAndView preupdate(int id){
		ModelAndView mav=new ModelAndView();
		mav.addObject("user", user.findById(id));
		mav.setViewName("update_user");
		return mav;
	}
	//修改
	@RequestMapping(value="updateuser")
	public ModelAndView update(User u){
		user.update(u);
		return new ModelAndView("redirect:/showuser.do");
	}
	
}

7.配置MyBatis的配置文件  MyBatisConf.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   
 	<typeAliases>
      <typeAlias alias="User" type="lx.entity.User"/> 
   </typeAliases>  
   <!-- 配置Mapper文件的路径 -->
   <mappers>
       <mapper resource="lx/dao/UserMapper.xml"/>
   </mappers>
   
</configuration>

(2)Spring MVC的配置文件

     SpringConf.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"
	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.2.xsd  
           http://www.springframework.org/schema/aop  
           http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
           http://www.springframework.org/schema/context  
           http://www.springframework.org/schema/context/spring-context-3.2.xsd">
	
	
	<!-- 读取解析properties文件 -->
	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >
		<property name="location">
			<value>classpath:jdbc.properties</value>
		</property>
	</bean>
	
	
	
	<!-- 配置数据源 -->
	
       <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="${jdbc.driver}"></property>
		<property name="url" value="${jdbc.url}"></property>
		<property name="username" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
	</bean>
    
    
    
    <!-- 配置数据库连接 -->
     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <!-- 得到数据源 -->
        <property name="dataSource" ref="dataSource" />  
        <!-- 加载MyBatis配置 -->
        <property name="configLocation" value="classpath:MyBatisConf.xml" />  
        <!-- 
                              它一般对应我们的实体类所在的包,这个时候会自动取对应包中不包括包名的简单类名作为包括包名的别名。
                              多个package之间可以用逗号或者分号等来进行分隔。(value的值一定要是包的全名)
          -->
        <property name="typeAliasesPackage" value="lx.entity"  />  
    </bean> 
    
    <!-- 注入映射器  
     为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,
  MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类 可以让你直接注入数据映射器接口到你的 service 层 bean 中。
     当使用映射器时,你仅仅如调 用你的 DAO 一样调用它们就可以了,但是你不需要编写任何 DAO 实现的代码,因为 MyBatis-Spring 将会为你创建代理。
     使用注入的映射器代码,在 MyBatis,Spring 或 MyBatis-Spring 上面不会有直接的依赖。
  MapperFactoryBean 创建的代理控制开放和关闭 session,翻译任意的异常到 Spring 的 DataAccessException 异常中。
     此外,如果需要或参与到一个已经存在活动事务中,代理将 会开启一个新的 Spring 事务。
    -->
    <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">  
       <property name="mapperInterface"  value="lx.dao.UserDao" />  
       <property name="sqlSessionFactory" ref="sqlSessionFactory" />
    </bean> 
    
    
    
    
	<!-- 自动扫描注解的bean -->	
	<context:component-scan base-package="lx.*" />


</beans>

SpringMVC-servlet.xml

    <beans xmlns="http://www.springframework.org/schema/beans"  
        xmlns:context="http://www.springframework.org/schema/context"  
        xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc"  
        xsi:schemaLocation="    
            http://www.springframework.org/schema/util   
            http://www.springframework.org/schema/util/spring-util-3.2.xsd  
            http://www.springframework.org/schema/mvc   
            http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd  
            http://www.springframework.org/schema/beans         
            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd    
            http://www.springframework.org/schema/context     
            http://www.springframework.org/schema/context/spring-context-3.2.xsd">  
           <mvc:annotation-driven/>   
	    <!-- HandlerMapping -->  
			<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>  
    	<!-- HandlerAdapter -->  
			<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>  
		    
    
     
     
        <!--扫描 @Controller注解的action -->  
       <context:component-scan base-package="lx.*" />  
       
        <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->  
    	<!-- ViewResolver  视图 -->  
       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
       <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>  
       <property name="prefix" value="/"/> <!-- 视图路径 --> 
       <property name="suffix" value=".jsp"/>  <!-- 视图后缀名 -->
	   </bean>  
	
  
    </beans>  

JSP页面部分:

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
    <a href="showuser.do">查询</a>
  </body>
</html>

list_user.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+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'list_user.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <table border="1">
    	<tr>
    	  <td>编号</td>
    	  <td>用户名</td>
    	  <td>密码</td>
    	  <td>可执行操作</td>
    	</tr>
    	<c:forEach var="user" items="${user}">
    	  <tr>
    	  	<td>${user.uid}</td>
    	  	<td>${user.uname}</td>
    	  	<td>${user.upass}</td>
    	  	<td>
    	  	  <a href="save_user.jsp">增加</a>
    	  	  <a href="deleteuser.do?id=${user.uid}">删除</a>
    	  	  <a href="preupdateuser.do?id=${user.uid}">修改</a>
    	  	</td>
    	  </tr>
    	</c:forEach>
    </table>
  </body>
</html>

save_user.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'save_user.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <form action="saveuser.do">
    	用户名:<input type="text" name="uname" />
    	<br>
    	密码:<input type="text" name="upass" />
    	<br>
    	<input type="submit" value="点击提交" />
    </form> 
  </body>
</html>

update_user.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'update_user.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <form action="updateuser.do">
    	编号:<input type="text" value="${user.uid}" name="uid" />
    	<br>
    	用户名:<input type="text" value="${user.uname}" name="uname" />
    	<br>
    	密码:<input type="text" value="${user.upass}" name="upass" />
    	<br>
    	<input type="submit" value="点击修改" />
    </form> 
  </body>
</html>
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <form action="updateuser.do">
    	编号:<input type="text" value="${user.uid}" name="uid" />
    	<br>
    	用户名:<input type="text" value="${user.uname}" name="uname" />
    	<br>
    	密码:<input type="text" value="${user.upass}" name="upass" />
    	<br>
    	<input type="submit" value="点击修改" />
    </form> 
  </body>
</html>

补!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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <!-- 加载 spring  -->
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:SpringConf.xml</param-value>
  </context-param>
  
  <!-- spring mvc 前端控制器  -->
  
  <servlet>
    <servlet-name>MyDispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:SpringMVC-servlet.xml</param-value>
    </init-param>
    <!--        标记容器是否在启动的时候就加载这个servlet。

            当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;

			当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。

			正数的值越小,启动该servlet的优先级越高。		
     -->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!-- spring mvc 配置结束     -->
  
  <!-- spring mvc  拦截   -->
  <servlet-mapping>
    <servlet-name>MyDispatcher</servlet-name>
    <!-- /拦截所有请求      -->
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <!-- spring mvc 拦截结束 -->

  <!-- spring mvc 过滤解决中文乱码   -->
  <filter>
    <filter-name>CharacterEncodingFilter</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>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

</web-app>

 本文没有看明白的地方可以下载案例(有注解)  附带JAR包:

案例的链接:点击下载
 

猜你喜欢

转载自blog.csdn.net/qq_36537546/article/details/79535556