• SpringMVC环境搭建


    springmvc和stuts2相同是实现mvc的优秀框架,进行业务逻辑控制。最大的差别就是struts2通过filter拦截请求到Action。而spring用的是servlet获取请求到controller。再一个是springmvc不用过多进行配置,能够通过注解非常方便简单的进行开发。

    SpringMVC+Spring+Hibernate环境搭建:

    1 导入相应jar包:

    2 在web.xml配置Spring的监听器,指定配置。配置SpringMVC的核心Servlet,指定哪些请求由SpringMVC的Controller处理。同一时候常常设置Spring的一个编码过滤器。指定编码格式防止乱码;

    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_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>SpringMVC</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <filter> <filter-name>Character 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> </filter> <filter-mapping> <filter-name>Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>


    3 指定结果视图,须要指定controller所在的包,配置在web.xml的同级文件夹下

    springmvc-servlet.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" 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"> <context:component-scan base-package="com.mvc.controller"></context:component-scan> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/" /> <property name="suffix" value=".jsp" /> </bean> </beans>


    4 配置spring的applicationContext.xml.这里配置的是hibernate和spring整合的内容

    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" xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:tx="http://www.springframework.org/schema/tx" 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/tx
           http://www.springframework.org/schema/tx/spring-tx.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd">
    
    	<context:component-scan base-package="com.mvc.dao,com.mvc.service,com.mvc.entity"></context:component-scan>
    	<tx:annotation-driven transaction-manager="transactionManager" />
    	
    	<bean
    		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    		<property name="locations">
    			<value>classpath:c3p0.properties</value>
    		</property>
    	</bean>
    	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    		<property name="driverClass" value="${driverClass}"></property>
    		<property name="jdbcUrl" value="${jdbcUrl}"></property>
    		<property name="user" value="${user}"></property>
    		<property name="password" value="${password}"></property>
    	</bean>
    
    	<bean id="sessionFactory"
    		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    		<property name="dataSource" ref="dataSource"></property>
    		<property name="packagesToScan">
    			<list>
    				<value>com.mvc.entity</value>
    				
    			</list>
    		</property>
    		<property name="hibernateProperties">
    			<props>
    				<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
    				<prop key="hibernate.show_sql">true</prop>
    				<prop key="hibernate.hbm2ddl.auto">update</prop>
    			</props>
    		</property>
    	</bean>
    	
    	<bean id="transactionManager"
    		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    		<property name="sessionFactory" ref="sessionFactory" />
    	</bean>
    
    </beans>


    c3p0.properties

    driverClass=oracle.jdbc.driver.OracleDriver
    jdbcUrl=jdbc:oracle:thin:@localhost:1521:XE
    user=orcl
    password=newsnews
    

    5 dao层代码

    package com.mvc.dao;
    
    import java.util.List;
    
    import com.mvc.entity.Goods;
    
    public interface GoodsDao {
    	void save(Goods goods);
    	List<Goods> findAll();
    	Goods findById(Integer id);
    	void update(Goods goods);
    	void delete(Goods goods);
    }
    


    package com.mvc.dao;
    
    import java.util.List;
    
    import javax.annotation.Resource;
    
    import org.hibernate.SessionFactory;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    import org.springframework.stereotype.Repository;
    
    import com.mvc.entity.Goods;
    @Repository(value="goodsDao")
    public class GoodsDaoImpl extends HibernateDaoSupport implements GoodsDao {
    	@Resource
    	public void setOne(SessionFactory sessionFactory){
    		super.setSessionFactory(sessionFactory);
    	}
    	
    	@Override
    	public void save(Goods goods) {
    		this.getHibernateTemplate().save(goods);
    
    	}
    
    	@Override
    	public List<Goods> findAll() {
    		// TODO Auto-generated method stub
    		return this.getHibernateTemplate().find("from Goods g");
    	}
    
    	@Override
    	public Goods findById(Integer id) {
    		// TODO Auto-generated method stub
    		return this.getHibernateTemplate().get(Goods.class, id);
    	}
    
    	@Override
    	public void update(Goods goods) {
    		this.getHibernateTemplate().update(goods);
    		
    	}
    
    	@Override
    	public void delete(Goods goods) {
    		this.getHibernateTemplate().delete(goods);
    		
    	}
    
    }
    


    6 service层代码


    package com.mvc.service;
    
    import java.util.List;
    
    import com.mvc.entity.Goods;
    
    public interface GoodsService {
    	void save(Goods goods);
    	List<Goods> findAll();
    	Goods findById(Integer id);
    	void update(Goods goods);
    	void delete(Goods goods);
    }
    


    package com.mvc.service;
    
    import java.util.List;
    
    import javax.annotation.Resource;
    
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.mvc.dao.GoodsDao;
    import com.mvc.entity.Goods;
    @Service(value="goodsService")
    @Transactional
    public class GoodsServiceImpl implements GoodsService {
    	private GoodsDao goodsDao;
    	
    	
    	public GoodsDao getGoodsDao() {
    		return goodsDao;
    	}
    
    	@Resource
    	public void setGoodsDao(GoodsDao goodsDao) {
    		this.goodsDao = goodsDao;
    	}
    
    
    	@Override
    	public void save(Goods goods) {
    		goodsDao.save(goods);
    		
    	}
    
    	@Override
    	public List<Goods> findAll() {
    		// TODO Auto-generated method stub
    		return goodsDao.findAll();
    	}
    
    	@Override
    	public Goods findById(Integer id) {
    		// TODO Auto-generated method stub
    		return goodsDao.findById(id);
    	}
    
    	@Override
    	public void update(Goods goods) {
    		// TODO Auto-generated method stub
    		goodsDao.update(goods);
    	}
    
    	@Override
    	public void delete(Goods goods) {
    		goodsDao.delete(goods);
    		
    	}
    
    }
    

    7 controller层代码,这里是被重定向的 RequestMapping须要设置GET方式


    package com.mvc.controller;
    
    import java.util.List;
    
    import javax.annotation.Resource;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    import com.mvc.entity.Goods;
    import com.mvc.service.GoodsService;
    
    @Controller
    @RequestMapping(value="/Goods")
    public class GoodsController {
    	private GoodsService goodsService;
    	@Resource
    	public void setGoodsService(GoodsService goodsService) {
    		this.goodsService = goodsService;
    	}
    
    	@RequestMapping(value="/saveGoods.do",method=RequestMethod.POST)
    	public String saveGoods(@ModelAttribute Goods goods){
    		System.out.println("in save");
    		goodsService.save(goods);
    		return "redirect:findAllGoods.do";
    	}
    	
    	@RequestMapping(value="/findAllGoods",method=RequestMethod.GET)
    	public String findAllGoods(@ModelAttribute Goods goods,Model model){
    		System.out.println("in findAll");
    		List<Goods> goodss=goodsService.findAll();
    		System.out.println(((Goods)goodss.get(0)).getGoodsName());
    		model.addAttribute("goodss",goodss);
    		return "goods_list";
    	}
    	@RequestMapping(value="/updateGoods.do",method=RequestMethod.GET)
    	public String updateGoods(@ModelAttribute Goods goods,Model model){
    		System.out.println("in update");
    		Goods goods1=goodsService.findById(goods.getGoodsId());
    		model.addAttribute("goods", goods1);
    		return "goods_detail";
    	}
    	@RequestMapping(value="/updateGoodsDo.do",method=RequestMethod.POST)
    	public String updateGoodsDo(@ModelAttribute Goods goods){
    		System.out.println("in updatedo");
    		goodsService.update(goods);
    		
    		return "redirect:findAllGoods.do";
    	}
    	@RequestMapping(value="/deleteGoods.do",method=RequestMethod.GET)
    	public String deleteGoodsDo(@ModelAttribute Goods goods){
    		System.out.println("in updatedo");
    		Goods g=goodsService.findById(goods.getGoodsId());
    		goodsService.delete(g);
    		return "redirect:findAllGoods.do";
    	}
    }
    

    8 jsp,在springmvc的controller里,假设给类加上RequestMapping,jsp跳进去总是存在和struts2的namespace类似路径问题。解决方案同样。就是在jsp中增加

     <% 
        String path=request.getContextPath(); 
        String basePath=request.getScheme()+"://"+request.getServerName()+":" 
        +request.getServerPort()+path+"/"; 
     %>

    <base href="<%=basePath %>"> 

    来解决。


    index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <form action="Goods/findAllGoods.do" method="get">
    
    <input type="submit" value="go">
    </form>
    </body>
    </html>



    goods_list.jsp

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        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" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <base href="<%=basePath %>">  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <table>
    <tr>
    	<td>商品名称</td><td>商品数量</td><td>编辑</td><td>删除</td>
    </tr>
    <c:forEach items="${goodss}" var="goods">
    <tr>
    	<td>${goods.goodsName}</td><td>${goods.goodsNumber}</td><td><a href="Goods/updateGoods.do?goodsId=${goods.goodsId }">编辑</a></td>
    	<td><a href="Goods/deleteGoods.do?goodsId=${goods.goodsId }">删除</a></td>
    </tr>
    </c:forEach>
    </table>
    <a href="goods_save.jsp">add</a>
    </body>
    </html>

    goods_save.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <form action="Goods/saveGoods.do" method="post">
    商品名称:<input type="text" name="goodsName"/><br>
    商品数量:<input type="text" name="goodsNumber"/><br>
    <input type="submit" value="go">
    </form>
    </body>
    </html>


    goods_detail.jsp

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        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" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <base href="<%=basePath %>">  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <form action="Goods/updateGoodsDo.do" method="post">
    <input type="hidden" name="goodsId" value="${goods.goodsId }"/>
    商品名称:<input type="text" name="goodsName" value="${goods.goodsName }"/><br/>
    商品数量:<input type="text" name="goodsNumber" value="${goods.goodsNumber }"><br/>
    <input type="submit" value="update">
    </form>
    </body>
    </html>





































































    
  • 相关阅读:
    每天一个linux命令(文件操作):【转载】find 命令的参数详解
    每天一个linux命令(文件操作):【转载】find命令之xargs
    每天一个linux命令(文件操作):【转载】find命令之exec
    每天一个linux命令(文件操作):【转载】find 命令概览
    每天一个linux命令(文件操作):【转载】locate命令
    js 常见bug
    form表单 post 请求打开新页面
    vue 鼠标移入移出 列表蒙层展示
    js 递归总结
    新编家庭医生大全集
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7134039.html
Copyright © 2020-2023  润新知