最近应公司要求,用了2天时间学了springmvc的搭建,就简单总结一下:

springmvc和struts2的比较,因为我是学过struts的,它们都是基于mvc模式而设计的web层框架

它们最大的区别:

1、入口

spring mvc的入口是servlet,而struts2是filter

(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),

这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。

2、主要机制

springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,参数的传递是直接注入到方法中的,是该方法独有的。

struts2是类级别的拦截, 一个类对应一个request上下文, struts是在接受参数的时候,可以用属性来接受参数, 这就说明参数是让多个方法共享的,

这也就无法用注解或其他方式标识所属方法了

intercepter的实现机制。struts有以自己的interceptor机制,spring mvc 用的是独立的AOP方式。这样导致struts的配置文件量还是比spring mvc大,

虽然struts的配置能继承,spring mvc使用更加简洁。

springmvc环境的搭建:

建立一个web项目:

首先在目录/WEB-INF/web.xml配置如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 
  <!-- 配置前端控制器 -->
  <servlet>
   <servlet-name>springmvc</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <!-- 服务器开启的时候,SpringMVC也开启 -->
   <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
   <servlet-name>springmvc</servlet-name>
   <url-pattern>*.action</url-pattern>
  </servlet-mapping>
 
  <servlet-mapping>
   <servlet-name>springmvc</servlet-name>
   <!-- mvc的名称可以随便取, 这样前台可以通过 /项目名/mvc/控制器指定的name名称访问 -->
   <url-pattern>/mvc/*</url-pattern>
  </servlet-mapping>
 
</web-app>

然后还是/WEB-INF/springmvc-servlet.xml(注:该文件名是[servletname]-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"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
 
 <!-- 配置controller,由spring来管理controller,前台通过name指定的值来获取访问相应的controller,
 因为ID不支持,后面action要和servlet中配置的后置相同 -->
 <bean class="com.controller.UserController" name="/list.action"></bean>
 
 <!-- 配置框架提供的视图解析器,通过配置前缀和后缀规则来解析,ModelAndView -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/WEB-INF/jsp/"></property>
  <property name="suffix" value=".jsp"></property>
 </bean>
 
</beans>

Controller层

/*** 基于注解的SpringMVC+Hibernate3.6的CRUD* @author Saiteam**/
@Controller
public class UserController {private UserDaoImpl userDao=new UserDaoImpl();@RequestMapping(value="/list.action")public String list(HttpServletRequest request){List<User> user = userDao.list();request.setAttribute("users", user);return "list";}@RequestMapping(value="/saveForward.action")public String saveForward(HttpServletRequest request){return "add";}@RequestMapping(value="/add.action")public String add(HttpServletRequest request) throws Exception{request.setCharacterEncoding("UTF-8");User user = new User();user.setName(request.getParameter("name"));user.setPassword(request.getParameter("password"));user.setSex(request.getParameter("sex"));user.setAddress(request.getParameter("address"));user.setPhone(request.getParameter("phone"));user.setEmail(request.getParameter("email"));userDao.save(user);request.setAttribute("users", userDao.list());return "list";}@RequestMapping(value="/delete.action")public String delete(HttpServletRequest request){int id = Integer.parseInt(request.getParameter("id"));userDao.delete(id);request.setAttribute("users", userDao.list());return "list";}@RequestMapping(value="/update.action")public String update(HttpServletRequest request) throws Exception{request.setCharacterEncoding("UTF-8");User user = new User();user.setId(Integer.parseInt(request.getParameter("id")));user.setName(request.getParameter("name"));user.setPassword(request.getParameter("password"));user.setSex(request.getParameter("sex"));user.setAddress(request.getParameter("address"));user.setPhone(request.getParameter("phone"));user.setEmail(request.getParameter("email"));userDao.update(user);request.setAttribute("users", userDao.list());return "list";}@RequestMapping(value="/get.action")public String get(HttpServletRequest request){int id = Integer.parseInt(request.getParameter("id"));request.setAttribute("user", userDao.get(id));return "update";}/*** 登陆功能* @param request* @return* @throws Exception */@RequestMapping(value="login.action")public String login(HttpServletRequest request) throws Exception{request.setCharacterEncoding("UTF-8");String name = request.getParameter("name");String password = request.getParameter("password");//测试System.out.println("-------name-----------"+name);System.out.println("-------password-----------"+password);if(name != null && !name.equals("")){if(password != null && !password.equals("")){User model = userDao.login(name, password);//测试System.out.println("-------------model--------"+model);if(model != null && !model.equals("")){request.setAttribute("users", userDao.list());return "list";}else{request.setAttribute("error", "用户或密码错误!");return "forward:/login.jsp";}}else{request.setAttribute("error", "密码不能为空!");return "forward:/login.jsp";}}else{request.setAttribute("error", "用户名不能为空!");return "forward:/login.jsp";}}//实现注册功能@RequestMapping(value="register.action")public String register(HttpServletRequest request) throws Exception{request.setCharacterEncoding("UTF-8");User user = new User();user.setName(request.getParameter("name"));user.setPassword(request.getParameter("password"));user.setSex(request.getParameter("sex"));user.setAddress(request.getParameter("address"));user.setPhone(request.getParameter("phone"));user.setEmail(request.getParameter("email"));userDao.save(user);return "forward:/index.jsp";}/*** 跳转到登陆页面* @param request* @return*/@RequestMapping(value="loginForward.action")public String loginForwad(HttpServletRequest request){return "forward:/login.jsp";}/*** 转发到注册页面* @param request* @return*/@RequestMapping(value="rgf.action")public String registerForwad(HttpServletRequest request){return "forward:/register.jsp";}}

service层

public class UserDaoImpl implements UserDao {public  void save(User user) {  Session session = HibernateSessionFactory.getSession();  Transaction tx = session.getTransaction();  try {  tx.begin();  session.save(user);  tx.commit();  } catch (HibernateException e) {  if (tx != null) { // 如果存在事务,则回滚  tx.rollback();  }  throw e; // 抛出异常  } finally {  if (session != null) // 如果session存在,则关闭  session.close();  }  }  public  void delete(int id) {  Session session = HibernateSessionFactory.getSession(); String hql = "DELETE User u WHERE u.id=:id";session.createQuery(hql).setInteger("id", id).executeUpdate();}  public void update(User user){Session session = HibernateSessionFactory.getSession(); Transaction tx = session.getTransaction();   try {  tx.begin(); session.update(user);  tx.commit();  } catch (HibernateException e) {  if (tx != null) { // 如果存在事务,则回滚  tx.rollback();  }  throw e; // 抛出异常  } finally {  if (session != null) // 如果session存在,则关闭  session.close();  }  }public  User get(int id) {  Session session = HibernateSessionFactory.getSession(); try {  User user = (User) session.get(User.class, id);  return user;  } finally {  if (session != null) {  session.close();  }  }  }public List<User> list(){Session session = HibernateSessionFactory.getSession();String hql = "FROM User";return session.createQuery(hql).list();}//登陆功能public User login(String name,String password){Session session = HibernateSessionFactory.getSession();String hql = "FROM User u WHERE u.name=:name AND u.password=:password";return (User) session.createQuery(hql).setString("name", name).setString("password", password).uniqueResult();}
}

jsp页面自己写

转载于:https://www.cnblogs.com/wcyBlog/p/3812453.html

springmvc环境的搭建相关推荐

  1. SpringMVC环境简单搭建

    本文介绍使用maven搭建Spring MVC 首先先介绍MVC(Model View Controller)模式: Model(模型):是应用程序中用于处理应用程序数据逻辑部分.通常模型对象负责在数 ...

  2. springmvc环境搭建及实例

    一. 软件环境 eclipse-jee-mars-R-win32-x86_64 jdk1.7.0_79 apache-tomcat-7.0.52 spring-framework-3.2.0.RELE ...

  3. 【SpringMVC入门】SpringMVC环境搭建、接收参数的几种方式、视图解析器、@ResponseBody

    一.SpringMVC 简介 1.SpringMVC 中重要组件 1.1 DispatcherServlet: 前端控制器,接收所有请求(如果配置/不包含jsp) 1.2 HandlerMapping ...

  4. Spring+SpringMVC+MyBatis框架搭建-----详细教程

    1.基本概念 1.1Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J ...

  5. SpringMVC+Mybatis+Maven搭建

    本文概述:首先讲解了一下springMVC.Mybatis.Maven等一些相关知识点,然后详细介绍maven环境变量的配置.Mybatis-Generator工具类使用.eclipse中maven的 ...

  6. android笔记1——开发环境的搭建

    Long Long ago...已经成为了历史,我还是要说出一个真相:早年前,那时候,android还不被大众所认知的时候,当然开发人员也没不像如今那样趋于饱和状态.一位大牛前辈,也是我的学长,那时候 ...

  7. Java开发环境的搭建以及使用eclipse从头一步步创建java项目

    原文:出自本人的Linux博客http://blog.csdn.net/unix21/article/details/18813173 一.Java 开发环境的搭建 这里主要说windows环境下怎么 ...

  8. Java开发环境的搭建以及使用eclipse创建项目

    一.Java 开发环境的搭建 这里主要说windows环境下怎么配置Java环境.如果是Linux环境参考本博客另一篇文章即可: Linux环境安装卸载JDK 1.首先安装JDK java的SDK简称 ...

  9. 如何在Mac环境下搭建svn服务器端环境

    为什么80%的码农都做不了架构师?>>>    在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功 ...

  10. cocos2d-js开发环境的搭建

    毕业设计现在要着手开始做了,真不知道当时为什么在选题的时候选择了一个益智游戏的设计,而且是使用cocos2d,但是我真的不知道什么是cocos2d-js,仅仅知道这是一个引擎,花了一天的时间来搭建了开 ...

最新文章

  1. 《C#精彩实例教程》小组阅读06 -- C#运算符与表达式
  2. 如何利用C#开发“通讯录”小程序
  3. 977dh用vbs通过wsh创建桌面快捷方式,快速启动,修改ie主页的恶意代码 ...
  4. 黑客用python还是ruby-Python、Lua和Ruby之优劣
  5. access mysql 同步_使ACCESS数据库保持同步
  6. YAML 在Python中的配置应用
  7. Centos 7 修改主机名
  8. Metal之实现视频采集与实时渲染
  9. windows下安装gevent
  10. oracle中调试存储过程,详解Oracle调试存储过程
  11. C++11学习 新特性之 “=default” 、“=delete”
  12. idea修改maven项目版本号
  13. 20天掌握C语言,C语言零基础到项目实战,玩转C语言
  14. es6 Symbol 的内置属性
  15. django 1.8 官方文档翻译: 3-2-3 TemplateResponse 和 SimpleTemplateResponse
  16. 数据分析在内容运营中的作用
  17. uclinux编译 心得一
  18. 移动电信联通三大运营商的“流量不清零”,谁最坑?
  19. 那些以玩笑说出口的话,往往是最真的表达
  20. 深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习

热门文章

  1. 字符串 -- 3.1 Valid Palindrome -- 图解
  2. springBoot过滤器去除请求参数前后空格
  3. 拉格朗日乘子法(编辑中)
  4. Pandas系列(十五)stack和pivot实现数据透视
  5. 【NeurIPS 2019】最大熵的蒙特卡洛规划算法
  6. 软件类配置(六)【ubuntu16.04安装opencv3.4.1】
  7. Java(38)_BorderLayout布局
  8. 51nod 1134最长递增子序列
  9. 跨域问题及jQuery中Ajax传参的讲解
  10. 【php】 布尔值判断