`
schy_hqh
  • 浏览: 555972 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

spring_MVC_02 CRUD

 
阅读更多

1.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" id="WebApp_ID" version="2.5">
  <servlet>
    <servlet-name>srpingMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>srpingMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

 2.配置与srpingMVC对应的xml

srpingMVC-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"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    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
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
    <mvc:annotation-driven/>

    <!-- 配置需要被扫描的包 -->
    <context:component-scan base-package="com.hqh.springmvc"/>

    <!-- 配置对静态资源文件的访问不被过滤 WebContent/resources目录中的文件都能访问 -->
    <mvc:resources location="/resources/" mapping="/resources/**"/>
    
    <!-- 配置返回的数据如何呈现:前缀+逻辑视图+后缀 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    	<property name="prefix" value="/WEB-INF/jsp/"/>
    	<property name="suffix" value=".jsp"/>
    </bean>
</beans>
 

 

控制器

package com.hqh.springmvc.controller;

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Random;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import com.hqh.springmvc.exception.UserException;
import com.hqh.springmvc.model.User;

@Controller
//访问本控制器的方法的路径都需要加/user
@RequestMapping("/user")
//只要往Model中添加loginUser,session中就会存储
@SessionAttributes("loginUser")
public class UserController {
	
	//保证输出的数据与加入Map时的顺序一致,使用LinkedHashMap
	private static Map<String,User> users = new LinkedHashMap<String,User>();
	
	{
		users.put("zs", new User(1,"zs",20,"bj"));
		users.put("ls", new User(2,"ls",20,"sh"));
		users.put("ww", new User(3,"ww",20,"gd"));
		users.put("zl", new User(4,"zl",20,"sz"));
	}
	
	//http://localhost:8080/spring_mvc_user/user/list
	@RequestMapping(value={"/list"})
	public String list(Model model) {
		System.out.println("UserController.list()");
		model.addAttribute("users", users);
		return "user/list";
	}
	
	//查询用GET
	@RequestMapping(value={"/addUser"},method=RequestMethod.GET)
	public String addUser(Model model) {
		//传递页面中需要赋值的对象到request中,这样spring在处理时才能识别到modelAttribute="user"定义的user
		//modelAttribute="user" user(User小写:user)实际代表了User.class
		model.addAttribute(new User());
		return "user/add";
	}
	//注:请求addUser页面与提交表单都是访问的addUser(),通过method来区分
	//1.请求页面使用get方式,故访问method为GET的addUser()
	//2.提交的时候使用post方式,故访问method为POST的addUser()
	//添加用POST
	@RequestMapping(value={"addUser"},method=RequestMethod.POST)
	public String addUser(User user) {
		user.setId(new Random().nextInt(100));
		users.put(user.getName(), user);
		//页面重定向,访问list()
		return InternalResourceViewResolver.REDIRECT_URL_PREFIX+"/user/list";
	}
	
	//REST风格:以资源为导向!
	//通过传入的参数值作为访问方法的后缀名 
	//http://localhost:8080/spring_mvc_user/user/getUser?name=zs --->
	//http://localhost:8080/spring_mvc_user/user/zs
	@RequestMapping(value={"/{name}"},method=RequestMethod.GET)
	public String getUser(@PathVariable String name,Model model) {
		System.out.println("UserController.getUser()");
		model.addAttribute(users.get(name));
		return "user/detail";
	}
	
	@RequestMapping(value="/{name}/update",method=RequestMethod.GET)
	public String updateUser(@PathVariable String name,Model model) {
		model.addAttribute(users.get(name));
		return "user/update";
	}
	@RequestMapping(value="/{name}/update",method=RequestMethod.POST)
	public String updateUser(@PathVariable String name, User user) {
		users.put(name, user);
		return "redirect:/user/list";
	}
	
	
	@RequestMapping(value="/{name}/delete",method=RequestMethod.GET)
	public String deleteUser(@PathVariable String name) {
		users.remove(name);
		return "redirect:/user/list";
	}
	
	@RequestMapping(value="/login",method=RequestMethod.GET)
	public String login() {
		return "user/login";
	}
	
	@RequestMapping(value="/login",method=RequestMethod.POST)
	public String login(String name, Model model) {
		if(!users.containsKey(name)) {
			throw new UserException("用户不存在");
		}
		//将"loginUser"放入session中
		model.addAttribute("loginUser",users.get(name));
		return "redirect:/user/list";
	}
	
	/**
	 * 异常处理
	 * @param ex
	 * @param req
	 * @return
	 */
	@ExceptionHandler(value={UserException.class})
	public String handlerException(Exception ex, HttpServletRequest req) {
		req.setAttribute("ex", ex);
		return "error";
	}
}

 

模型

package com.hqh.springmvc.model;

public class User {
	private int id;
	private String name;
	private int age;
	private String addr;
	
	public User() {
		super();
	}

	public User(int id, String name, int age, String addr) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.addr = addr;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}
	
	
	
}

 

异常类

package com.hqh.springmvc.exception;

public class UserException extends RuntimeException {

	public UserException() {
		super();
	}

	public UserException(String message, Throwable cause) {
		super(message, cause);
	}

	public UserException(String message) {
		super(message);
	}

	public UserException(Throwable cause) {
		super(cause);
	}

}

 

list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
	request.setAttribute("context", this.getServletContext().getContextPath());
%>
<!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>
<link rel="stylesheet" type="text/css" href="${context}/resource/css/main.css">
</head>
<body>
	<h1>users</h1>
	当前登陆用户:${loginUser.name}<br/>
	<a href="addUser">add user</a><br/>
	<c:forEach items="${users}" var="user">
		<a href="${user.value.name}">${user.value.name}</a>
		<a href="${user.value.name}/update">更新</a>
		<a href="${user.value.name}/delete">删除</a>
		<br/>
	</c:forEach>
</body>
</html>

 

分享到:
评论

相关推荐

    Spring_MVC_MYBatis企业应用实战

    开发者可以利用Spring MVC处理HTTP请求,调度业务逻辑,而MyBatis则负责与数据库的交互,实现数据的CRUD操作。这种组合可以有效地降低系统复杂度,提高开发效率,并且易于扩展和维护。 《Spring_MVC_MYBatis企业...

    mybatis_spring_MVC_demo

    【标题】"mybatis_spring_MVC_demo"项目是一个整合了MyBatis、Spring和MVC框架的简单示例,旨在帮助开发者理解这三个组件如何协同工作以构建一个完整的Web应用程序。MyBatis是一个轻量级的持久层框架,它允许开发者...

    spring-rest.rar_DEMO_employeeDS.java_rest spring mvc_spring mvc_

    在本示例中,我们将深入探讨如何利用Spring MVC框架构建RESTful API,主要涉及`employeeDS.java`这个可能的数据服务类以及与`rest_spring_mvc`、`spring_mvc`和`spring_rest`相关的概念。`spring-rest.rar`是一个...

    bbs.zip_Spring mvc bbs_hibernate bbs_spring mvc_spring mvc hiber

    《Spring MVC + Hibernate 实现BBS论坛系统详解》 在当今的互联网开发中,Spring MVC 和 Hibernate 是两个非常重要的框架,它们在企业级应用开发中起着关键作用。本项目"Spring MVC bbs"结合了Spring3和Hibernate,...

    Mvc.rar_JavaMvc_MVC 数据库_mvc_mvc模式实例

    在Java MVC中,控制器通常由Servlet或Spring MVC的@Controller注解的类实现。在这个例子中,控制器可能会处理HTTP请求,如GET和POST,然后调用相应的服务方法来执行数据库操作。 **数据库交互**: 在Java MVC中,与...

    spring_mvc_crud_jdbc_template:使用JDBC模板的Spring MVC Crud

    使用JDBC模板的Spring MVC CRUD这是一个简单的SPRING MVC项目,其中我使用了Spring MVC,JDBC模板进行数据操作,而在数据库方面,我使用了MYSQL数据库。脚步- 1.创建名称为“ usersdb”的MYSQL数据库2.使用以下命令...

    ssh demo.rar_DEMO_promiseddzi_spring mvc_ssh_ssh demo

    【标题】"SSH Demo"指的是一个使用Spring、Spring MVC和Hibernate技术栈的示例项目,主要涉及SSH(Spring、Spring MVC、Hibernate)框架的集成应用。这个DEMO旨在展示如何在Java Web开发中运用这些技术进行基本的...

    Struts_Spring_Hibernate_CRUD操作案例_-分页查询

    Struts、Spring和Hibernate是Java开发中常用的三大框架,它们分别负责不同的职责:Struts作为MVC(模型-视图-控制器)框架处理请求和响应,Spring提供了依赖注入和事务管理,而Hibernate则是对象关系映射(ORM)框架...

    Dimensions-ssm_crud-test_ssm系统_spring_ssm管理系统_基于ssm_SSM系统.zip

    SSM(Spring、SpringMVC、MyBatis)是一个经典的Java web开发框架组合,它将Spring的核心容器、Spring MVC作为视图控制器以及MyBatis作为持久层框架集成在一起,为开发者提供了一种高效且灵活的开发环境。...

    demo.zip_DEMO_spring mvc_ssm demo

    本示例"demo.zip_DEMO_spring mvc_ssm demo"提供了一个整合这三个组件的搭建Demo,旨在帮助开发者快速理解并实践SSM(Spring、Spring MVC、MyBatis)集成。 首先,让我们深入了解一下Spring框架。Spring的核心特性...

    MVC_demo.rar_DEMO_MVC de_MVC分页_mvc demo_多层 java

    在Java中,Spring MVC框架常被用来实现Controller,这里的"BLL"(Business Logic Layer)目录可能包含了Controller的实现,而"IDAL"(Interface Data Access Layer)可能包含对数据访问层接口的定义。 **4. 分页**...

    一个完整的Spring MVC的CRUD操作实例

    本实例将深入探讨如何实现一个完整的Spring MVC CRUD操作。 首先,我们来了解CRUD操作的基本概念。CRUD是Create(创建)、Read(读取)、Update(更新)和Delete(删除)的首字母缩写,代表了数据库操作中最基本的...

    FF.MSOL.SOA.rar_jpa hibernate_spring hibernate_spring mvc

    标题中的“FF.MSOL.SOA.rar_jpa hibernate_spring hibernate_spring mvc”表明这是一个关于Java企业级开发的资源包,其中涉及到的主要技术栈是JPA(Java Persistence API)、Hibernate、Spring以及Spring MVC。...

    paoo_Ex9_Spring_MVC_JPA

    标题 "paoo_Ex9_Spring_MVC_JPA" 暗示了这是一个关于使用Spring MVC框架结合JPA(Java Persistence API)进行Web开发的项目。这个项目可能涉及到一系列的Java Web开发技术,包括但不限于Spring框架的核心组件、MVC...

    基于注解的Spring_mvc增删改DEMO源码

    在本项目中,"基于注解的Spring_mvc增删改DEMO源码"是一个针对初学者和开发者设计的学习资源,旨在深入理解Spring MVC框架如何使用注解进行 CRUD(创建、读取、更新、删除)操作。Spring MVC是Spring框架的一个模块...

    MyBatis_Spring3_Jsp.rar_spring3 mvc

    通过以上步骤,我们可以快速搭建起一个基于Spring MVC和MyBatis的项目,并实现基本的CRUD功能。实际项目中,还需要考虑异常处理、安全性、性能优化等多个方面,但这些基础配置和操作为后续的开发打下了坚实的基础。

    _佟刚_JavaWEB_MVC案例源码

    这个 "_佟刚_JavaWEB_MVC案例源码" 提供的实例可能涵盖从简单的 CRUD 操作到更复杂的业务流程,学习者可以通过阅读和运行源代码,深入了解如何在实际项目中应用 MVC 设计模式。同时,了解并掌握 Spring MVC 的配置、...

Global site tag (gtag.js) - Google Analytics