springmvc环境的搭建
最近应公司要求,用了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层
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | /** * 基于注解的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层
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | 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页面自己写
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)