SpringMVC + Hibernate + MySQL 的简易网页搭建(Control实现篇)

在完成Dao层的实现之后,接下来我们需要继续开发我们网页的Control层以及View层。

从开发网页的角度来说:

1. Control层之下的Dao层和Service层可以看做是一个网页的底层负责与数据库交互,做数据持久化,实现一些逻辑业务等

2. Control层自身则是一个网页的中间层,负责联通Dao层以及View层,将View层的请求传向Dao层,并从Dao层获取数据,再返回到View层进行显示

3. View层则是网页的上层,负责直接与用户进行交互,获取用户的需求,将用户的需求转变成一个个的请求,向下传递与Control层。

并且从层级结构上来说,Control与View的连接更为紧密,所以往往这两层是一起进行开发的。

在进行Control层开发的时候,由于网页的每部分可执行的操作不同,可以依据这些不同的行为操作分化出许多个控制器对网页的操作进行监控,比如我们的网页在刚打开的时候,需要进行一个用户的登录的过程,那么这个过程我们可以分化出一个UserLoginController对用户的行为从View传下来的请求进行相应的响应和Action。

此处要补充说明一点,基于SpringMVC3.0之后的框架,网页的URL请求映射可采用注解的形式 @RequestMapping 进行,十分的方便开发,并且对于每一个URL请求的相应返回,可以通过对配置文件的配置,直接返回对应的字符串,view层就会展示相应的JSP页面,或者可以通过返回ModelAndView对象,可向jsp页面传入数据。

以下是实现用户登录控制器UserLoginController代码:

package Fmu.wellhold.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import Fmu.wellhold.dao.ITF.UserInfoDaoITF;
import Fmu.wellhold.dao.pojo.UserInfo;

@Controller
public class UserLoginController {

    @Resource private UserInfoDaoITF userInfoService;

    @RequestMapping(value="/index",method={RequestMethod.GET})
    public String modelAutoBindtoIndex(HttpServletRequest request)
    {
        //配合XML当中的视图映射实用
        System.out.println(">>>>    已经启动Controller");
        return "index";
    }

    @RequestMapping(value="/index", method = {RequestMethod.POST})
    public ModelAndView modelAutoBindtologin(HttpServletRequest request,UserInfo UserInfo)
    {
        List list=new ArrayList();
        list=userInfoService.findByNamePwd(UserInfo.getId(),UserInfo.getPwd());
        System.out.println("查询结果是:"+list.size());
        if(list.isEmpty())
        {
            System.out.println(">>>>    不存在该用户");
//            model.addAttribute("accountmodel", UserInfo);
            return new ModelAndView("forworld","erro","the user is not exit");
        }
        else
         {
             UserInfo user = (UserInfo) list.get(0);
             if(user.getNumber()<=10){
                    System.out.println(">>>>    该用户为管理员");
                    list.add(userInfoService.findAll());
                    System.out.println(list.get(0));
                    return new ModelAndView("showUser1","list",list);
             }

             System.out.println(">>>>    普通用户登录");
             Map map = new HashMap();
             map.put("user", user);
             return new ModelAndView("userInfo","map",map);
         }
    }

}
方法modelAutoBindtoIndex作用是当浏览器输入http://localhost:8080/MoneyRecordSys/index的时候,向view层返回显示index.jsp的响应,而方法modelAutoBindtoLogin是当用户从index.jsp页面post回一些数据的时候,控制器映射到的该方法负责进行逻辑处理,并且再次向View层返回View下一步要进行的响应,即应该继续显示哪个页面,此处为showUser1.jsp,并且将list这个对象传到该JSP当中,list[0]记录当前用户信息,list[1]里头包涵另个list,这个list内容是网页当中所有用户的数据。

一下是index.jsp代码:
<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
    <head>
    <title></title>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <style type="text/css">
    </style>
    </head>

    <body>
        <!-- 控制格式,纵向居中 -->
        <table width="500" height="195" align="center">
            <tr>
                <td>&nbsp;</td>
            </tr>
        </table>
        <!--标签中的name和ID是两个概念,name面向后台,id面向jsp  -->
        <form method="post">
            <table width="1500" height="570" align="center"  background="images/2.png">
                <tr>
                    <td colspan="2">&nbsp;</td>
                    <td>${error}</td>
                </tr>
                <tr>
                    <td width="500">&nbsp;</td>
                    <td width=136><span style="font-size:30pt;font-family:宋体;font-weight:bold">用户名</span></td>
                    <td width="404"><input name="id" type="text" style="height:35px;width:350px"></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td><span style="font-size:30pt;font-family:宋体;font-weight:bold">密码</span></td>
                    <td><input name="pwd" type="password" style="height:35px;width:350px"></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td colspan="2" align="center">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    <input type="submit" value="login" style="height:50px;width:200px;font-size:18pt;font-family:Calibri;font-weight:bold"></td>
                </tr>
            </table>
        </form>
        <br>

    </body>
</html>

此处补充说明一个点:在jsp当中,我们可以看到标签中的name和ID是两个概念,name是面向后台,id面向的则是jsp,在index.jsp我们将用户输入的用户名和密码以 name="id"和name="pwd"

POST回控制器对应的接受方法 public ModelAndView modelAutoBindtologin(HttpServletRequest request,UserInfo UserInfo),形参中并没有HttpServletResponse而是UserInfo是因为

UserInfo这个POJO类当中,正好有两个字段名为id和pwd,所以index.jsp  POST回来的用户名和密码则自动解析到了UserInfo当中。

当用户以管理员的权限登录成功之后,进入到主界面当中,并且可以向网页的注册用户信息进行一系列的操作,这一系列的操作,我们分化出一个UserOperationController控制器进行管理和监控,包括

添加用户,删除用户,更改用户的信息等操作。

package Fmu.wellhold.controller;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import Fmu.wellhold.dao.ITF.UserInfoDaoITF;
import Fmu.wellhold.dao.pojo.UserInfo;

@Controller
public class UserOperationController {

    @Resource private UserInfoDaoITF UserInfoService;
    @Resource private FileUpload fileUpload;//注入则不需要new了

    @RequestMapping(value="showUser1",method={RequestMethod.GET})
    public ModelAndView showUser(HttpServletRequest request,HttpServletResponse response)
    {
        String number = request.getParameter("number");
        List list=new ArrayList<>();
        list.add(UserInfoService.findByld(Integer.valueOf(number)));
//        System.out.println("showUser控制器已启动");
        list.add(UserInfoService.findAll());
        return new ModelAndView("showUser1","list",list);
    }

    @RequestMapping(value="updateTheUser",method={RequestMethod.GET})
    public ModelAndView getToupdateTheUser(HttpServletRequest request,HttpServletResponse response) throws Exception
    {
        String number = request.getParameter("number");
        String user= request.getParameter("user");
//        System.out.println("updateTheUser,已经启动控制器");
        List list=new ArrayList<>();

        UserInfo user1=(UserInfo)UserInfoService.findByld(Integer.valueOf(user));
        list.add(user1);
        list.add(UserInfoService.findByld(Integer.valueOf(number)));
        return new ModelAndView("updateTheUser","list",list);

    }
    @RequestMapping(value="postTheUpdateUserInfo",method={RequestMethod.POST})
    public ModelAndView updateTheUserInfo(HttpServletRequest request,HttpServletResponse response) throws Exception
    {

        Map<String, String> map = fileUpload.upload(request, response);
//        System.out.println(map.toString());
        UserInfo user = new UserInfo();
        user.setId(map.get("id"));
        user.setPwd(map.get("pwd"));
        user.setName(map.get("name"));
        user.setSex(map.get("sex"));
//        user.setBirthday(map.get("birthday"));
        user.setCome(map.get("come"));
        user.setRemark(map.get("remark"));
        user.setNumber(Integer.valueOf(map.get("number").toString()));
//        System.out.println(user.toString());
        UserInfoService.update(user);
//        return null;
        return showUser(request, response);
    }

    @RequestMapping(value="deleteUser",method={RequestMethod.GET})
    public ModelAndView deleteUser(HttpServletRequest request,HttpServletResponse response) throws Exception
    {
        String number=request.getParameter("deleteUserNum");
//        System.out.println("deleteUser"+number);
        UserInfoService.delete(Integer.valueOf(number));
        return showUser(request, response);
    }

    @RequestMapping(value="insertTheUser",method={RequestMethod.GET})
    public ModelAndView getToInsertUser(HttpServletRequest request,HttpServletResponse response) throws Exception
    {
        String number = request.getParameter("number");
//        System.out.println("insertTheUser,已经启动控制器");
        List list=new ArrayList<>();
        UserInfo user1=(UserInfo)UserInfoService.findByld(Integer.valueOf(number));
        list.add(user1);
        return new ModelAndView("insertTheUser","list",list);
    }

    @RequestMapping(value="postTheInsertUserInfo",method={RequestMethod.POST})
    public ModelAndView postTheInsertUserInfo(HttpServletRequest request,HttpServletResponse response) throws Exception
    {
//        System.out.println("postTheInsertUserInfo控制器已启动");
        Map<String, String> map = fileUpload.upload(request, response);
//        System.out.println(map.toString());
        if (map != null)
        {
            UserInfo user = new UserInfo();
            user.setId(map.get("id"));
            user.setPwd(map.get("pwd"));
            user.setName(map.get("name"));
            user.setSex(map.get("sex"));
            user.setCome(map.get("come"));
            user.setRemark(map.get("remark"));
            UserInfoService.insert(user);
        }
        else
        {
            PrintWriter out = response.getWriter();
            out.print("<script type=‘text/javascript‘>");
            out.print("alert(‘你提交的新建用户为空‘);");
            out.print("window.history.go(-1);");
            out.print("</script>");
            out.close();
        }
        return showUser(request, response);
    }

}

未完待续。。。

 
时间: 2024-10-23 02:17:47

SpringMVC + Hibernate + MySQL 的简易网页搭建(Control实现篇)的相关文章

SpringMVC + Hibernate + MySQL 的简易网页搭建

首先在搭建一个网站后台前,需要明确出一个合理的网页搭建的结构框架,即从DB  ==>  Dao层 ==>Service层 ==>Control层 ==>View层(该层严格意义上不属于后台)当中,各层的概念和设计思路. Dao层(Data Acess Object):所谓的Dao层,主要是网页的数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,包括网页数据当中的增删改查,DAO层的设计首先是设计DAO的接口的抽象,然后在Spring的配置文件中定义此接口的实现类,之后对于

myeclipse配置springmvc+hibernate+mysql+tomcat 基于maven

环境: 1.myeclipse 2014 下载+破解..  http://my-eclipse.cn/ 2.hibernate 4.2.5.Final 3.mysql 好像是最新的 4.tomcat v8 5.maven 是myeclipse内置的.. new 一个webapp的maven的项目 先添加依赖项到pom.xml <properties> <springframework>4.0.5.RELEASE</springframework> <servlet

CentOS 7 yum nginx MySQL PHP 简易环境搭建

用centos自带的yum源来安装nginx,mysql和php,超级方便,省去编译的麻烦,省去自己配置的麻烦,还能节省非常多的时间. 我们先把yum源换成国内的阿里云镜像源(当然不换也可以),先备份一下原来的源镜像文件,以免出错后可以恢复: [[email protected]192 ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载新的CentOS-Base.repo 到/e

springMVC+angular+bootstrap+mysql的简易购物网站搭建

springMVC+angular+bootstrap+mysql的简易购物网站搭建 介绍 前端的css框架用了bootstrap, 以及bootstrap的JS组件, 以及很好用的angular(angular大法好), 项目一共包含了7个静态界面, 静态界面的数据展示都使用了angularJS , 后端是基于java的spring, 容器为tomcat, 项目代码分享到百度云盘 , 这个项目的优势是, 所有的显示都是在前端完成, 数据交互也是通过ajax完成, 没有频繁的页面跳转:先上两张商

Maven搭建SpringMVC+Hibernate项目详解

前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这篇主要搭建SpringMVC4.1.4和Hibernate4.3.8,之前也打了好多SpringMVC的,这部分已经非常的熟悉了,毕竟业开发过一年多SpringMVC的,这次持久层采用Hibernate,数据源采用c3p0,数据库暂采用MySQL,主要是想复习一下Hibernate.搭建Spring

Maven搭建SpringMVC+Hibernate项目详解 【转】

前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这篇主要搭建SpringMVC4.1.4和Hibernate4.3.8,之前也打了好多SpringMVC的,这部分已经非常的熟悉了,毕竟业开发过一年多SpringMVC的,这次持久层采用Hibernate,数据源采用c3p0,数据库暂采用MySQL,主要是想复习一下Hibernate.搭建Spring

Maven搭建SpringMVC+Hibernate项目详解(转)

前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这篇主要搭建SpringMVC4.1.4和Hibernate4.3.8,之前也打了好多SpringMVC的,这部分已经非常的熟悉了,毕竟业开发过一年多SpringMVC的,这次持久层采用Hibernate,数据源采用c3p0,数据库暂采用MySQL,主要是想复习一下Hibernate.搭建Spring

J2EE搭建SpringMVC+hibernate开发环境

搭建过程完全参考 http://blog.csdn.net/chenyi0834/article/details/19631445 (SpringMVC+Hibernate+Spring整合实例(一)) 本篇关于SpringMVC基本都会采用注解的方式,首先配置好数据源以及事务spring-common.xml,放在config.spring包下: <?xml version="1.0" encoding="UTF-8"?> <beans xmln

Spring+Springmvc+Hibernate环境搭建与配置

这里给出JavaWeb项目Spring+Springmvc+Hibernate框架环境的搭建与配置,方便以后快速创建项目.下面是以本人的一个项目为例给出的配置,不同项目具体的结构都是可以按一下结构完成的,至于配置内容则需要按照具体的项目需求更改部分内容.需要注意的是,本项目是以使用注解为前提完成的项目. 一.项目目录 首先说明一下,本项目是maven项目,采用Spring+Springmvc+Hibernate的框架,前端模板引擎采用thymeleaf,html代码存放在下面结构的templat