框架第十五天

Spring + SpringMVC + Hibernate3框架整合
開(kāi)發(fā)步驟
首先導(dǎo)入jar包(我做的項(xiàng)目中涉及文件和圖片的導(dǎo)入與導(dǎo)出,所以加入了poi的jar包,poi的版本是3.1的)


poi的jar包.png

用到的jar包過(guò)多不方便截圖(其實(shí)有些jar包是沒(méi)用到的),可到我的工程里面看
2 配置三大框架的的配置文件
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">
  <display-name></display-name> 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!-- 以下為配置spring  -->
  <!-- 配置spring listener -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
      <!-- 上下文環(huán)境 配置文件位置 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  
  <!-- 以下為配置spring mvc -->
  <servlet>
  <servlet-name>mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
</servlet>
  <servlet-mapping>
  <servlet-name>mvc</servlet-name>
  <url-pattern>*.do</url-pattern><!-- springmvc開(kāi)發(fā)一般只攔.do文件 -->
  </servlet-mapping>
  <!-- 配置編碼控制器 -->
  <filter>
    <filter-name>encodingFilter</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>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
<!-- 配置OpenSessionInViewFilter,解決Hibernate的Session的關(guān)閉與開(kāi)啟問(wèn)題-->
<filter>
    <filter-name>openSessionInView</filter-name>
    <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
               </filter-class>
        <init-param>
        <param-name>sessionFactoryBeanName</param-name>
        <param-value>sessionFactory</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>openSessionInView</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

applacitonContext.xml(置于src根目錄下) (這里配置的是spring的配置文件)

<?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:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
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/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    <!-- 自動(dòng)掃描 -->
    <context:component-scan base-package="com.hw"></context:component-scan>
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url"
            value="jdbc:mysql://localhost:3306/cc?useUnicode=true&characterEncoding=utf8"></property>
        <property name="username" value="root"></property>
        <property name="password" value="huayu123" />

        <!-- 連接池啟動(dòng)時(shí)的初始值 -->
        <property name="initialSize" value="3" />
        <!-- 連接池的最大值 -->
        <property name="maxActive" value="300" />
        <!-- 最大空閑值.當(dāng)經(jīng)過(guò)一個(gè)高峰時(shí)間后,連接池可以慢慢將已經(jīng)用不到的連接慢慢釋放一部分,一直減少到maxIdle為止 -->
        <property name="maxIdle" value="2" />
        <!-- 最小空閑值.當(dāng)空閑的連接數(shù)少于閥值時(shí),連接池就會(huì)預(yù)申請(qǐng)去一些連接,以免洪峰來(lái)時(shí)來(lái)不及申請(qǐng) -->
        <property name="minIdle" value="1" />
    </bean>

    <!-- 配置sessionFactory -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- 分開(kāi)整合<property name="configLocation" value="classpath:hibernate.cfg.xml"> 
            </property> -->
        <property name="dataSource" ref="dataSource"></property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
            </props>
        </property>
        <property name="mappingResources"><!-- hibernate映射文件 -->
            <list>
                <value>com/hw/entity/Dept.hbm.xml</value>
                <value>com/hw/entity/Person.hbm.xml</value>
                <value>com/hw/entity/User.hbm.xml</value>
            </list>
        </property>

    </bean>

    <!-- xml方式配置 -->

    <bean id="transactionManager"
        class=" org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <!-- 激活自動(dòng)代理功能 -->
    <aop:aspectj-autoproxy proxy-target-class="true" />

    <aop:config><!-- 定義一個(gè)切面,并將事務(wù)通知和切面組合 -->
        <aop:pointcut expression="execution(* com.hw.service.impl.*.*(..))"
            id="trPointcut" />
        <aop:advisor advice-ref="trcut" pointcut-ref="trPointcut" />
    </aop:config>

    <!-- 定義事務(wù)通知 -->
    <tx:advice id="trcut" transaction-manager="transactionManager">
        <!-- 定義事務(wù)傳播規(guī)則 -->
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="del*" propagation="REQUIRED" />
            <tx:method name="*" propagation="REQUIRED" read-only="true" />
            <!-- 也可以對(duì)所有方法都應(yīng)用REQUIRED事務(wù)規(guī)則 <tx:method name="*" propagation="REQUIRED"/> -->
        </tx:attributes>
    </tx:advice>
    <!-- 配置spring事務(wù) 基于全注解開(kāi)發(fā),只需在所需類前加上:@Transactional 
              不需要事務(wù)的方法前加上: @Transactional(propagation = Propagation.NOT_SUPPORTED) 
        <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> 
        <property name="sessionFactory" ref="sessionFactory"></property> </bean> 
        
        <bean id="transactionManager" class=" org.springframework.orm.hibernate3.HibernateTransactionManager"> 
        <property name="sessionFactory" ref="sessionFactory"></property> </bean> 
        
        <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/> -->
</beans>

mvc-servlet.xml(置于WEB-INF文件夾下) (這里配置的spring mvc的配置文件)
因?yàn)槲易龅捻?xiàng)目涉及到上傳與下載所以配置的時(shí)候定義了文件上傳解析器

<?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:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
    <!-- 讓spring 去掃描類  建立關(guān)聯(lián) -->
    <!-- 是對(duì)包進(jìn)行掃描,實(shí)現(xiàn)注釋驅(qū)動(dòng)Bean定義,同時(shí)將bean自動(dòng)注入容器中使用。即解決了@Controller標(biāo)識(shí)的類的bean的注入和使用 -->
    <mvc:annotation-driven/>
<!-- 掃苗controll包即下面的控制器 -->
<context:component-scan base-package="com.hw.controller"></context:component-scan>
<!-- 試圖解析器 -->
<bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 <!-- 前綴 -->
 <property name="prefix" value="/WEB-INF/per/"></property>
 <!-- 后綴-->
 <property name="suffix" value=".jsp"></property>
</bean>
<!-- 文件上傳解析器 -->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- one of the properties available; the maximum file size in bytes -->
       <property name="defaultEncoding" value="utf-8" />
        <property name="maxUploadSize" value="104857600"/>
        <property name="maxInMemorySize" value="4096"/>
    </bean>
</beans>

3 Controller(控制器)
UserAction(用戶登錄與注冊(cè))

package com.hw.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


import com.hw.entity.User;
import com.hw.service.UserService;
import com.hw.service.impl.UserServiceImpl;
import com.hw.utils.MD5Utils;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
@Controller
@RequestMapping("user")
public class UserAction {
   private UserService db=new UserServiceImpl();
   @RequestMapping("add")
    public String add(User user) throws Exception {
        String ss=MD5Utils.MD5Src(user.getUserPass());//進(jìn)行md5加密
        user.setUserPass(ss);//加密后存進(jìn)行去
        db.add(user);
        return "redirect:/index.jsp";
    }
   @RequestMapping("login")
    public String login(User user) throws Exception {
        //把密碼通過(guò)md5加密后和數(shù)據(jù)庫(kù)的表中的對(duì)應(yīng)字段進(jìn)行比較
        if(db.login(user.getUserName(), MD5Utils.MD5Src(user.getUserPass()))){
            return "redirect:/per/listPerson.do";//重定向
        }else{
            return "redirect:/index.jsp";
        }
    }
}

PersonAction (用戶管理)

package com.hw.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;

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

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.hw.entity.Dept;
import com.hw.entity.Person;
import com.hw.service.DeptService;
import com.hw.service.PersonService;
import com.hw.service.impl.DeptServiceImpl;
import com.hw.service.impl.PersonServiceImpl;
import com.hw.utils.ExportExcel;
import com.hw.utils.FileDownLoad;
import com.hw.utils.PageUtils;
@Controller
@RequestMapping("per")
public class PersonAction  {
    private Person per = new Person();//有set get方法
    private PersonService ps = new PersonServiceImpl();
    private DeptService ds=new DeptServiceImpl();
    private List<Dept> list=new ArrayList<Dept>();//有set get方法
    private File myfile;//有set get方法
    private String myfileFileName;//有set get方法
    private List<String> perlist=new ArrayList<String>();
    private List<Person> source=new ArrayList<Person>();
    @RequestMapping("dept")
    @ResponseBody  //生成json格式
    public List<Dept> dept(){//下載
        List<Dept> list=ds.list();
        return list;
    }
    @RequestMapping("download")  //下載,沒(méi)有返回值
    public void download(HttpServletRequest request,HttpServletResponse response,Person per) throws Exception{//下載
        FileDownLoad.download("\\upload\\"+per.getFilepath(), request, response);
    }
    @RequestMapping("toadd")
    public String toAdd() throws Exception {// 到添加
         list=ds.list();//查詢出所有部門(mén)表
        return "add";
    }
    @RequestMapping("toupdate")
    public String toUpdate(HttpServletRequest request,Person per) throws Exception {// 到修改
        per=ps.getPerson(per.getPid());//獲取單個(gè)對(duì)象
        System.out.println(per.getFilepath());
        request.setAttribute("per",per);//存起來(lái)
        
        String []aa=per.getSkilled().split(",");
        for(int i=0;i<aa.length;i++){
         if(aa[i].equals("武術(shù)")){
             request.setAttribute("a",aa[i]);    
         }else if(aa[i].equals("足球")){
             request.setAttribute("b",aa[i]);    
         }else if(aa[i].equals("唱歌")){
             request.setAttribute("c",aa[i]);    
         }else if(aa[i].equals("籃球")){
             request.setAttribute("d",aa[i]);    
         }
         }
        return "update";
    }
    @RequestMapping("add")
    public String add(@RequestParam(value = "file", required = false) MultipartFile file,
            HttpServletRequest request,Person user) throws Exception {// 添加
        String path = request.getSession().getServletContext()
                .getRealPath("upload");
        String fileName = file.getOriginalFilename();
        //解決文件同名問(wèn)題
        fileName = UUID.randomUUID().toString().replace("-", "")+fileName.substring(fileName.lastIndexOf("."));
        File targetFile = new File(path, fileName);
        if (!targetFile.exists()) {
            targetFile.mkdirs();
        }
        // 保存
        try {
            file.transferTo(targetFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
        request.setAttribute("fileUrl", request.getContextPath() + "/upload/"
                + fileName);
        user.setFilepath(fileName);
        /*如果不涉及上傳則表單中不能設(shè)置enctype="multipart/form-data",
         * 本方法中只需保留Person pe和以下2行代碼即可
         */
        ps.add(user);
        return "redirect:listPerson.do";
    }
@RequestMapping("update")
    public String update(@RequestParam(value = "file", required = false) MultipartFile file,
            HttpServletRequest request,Person per) {    
        String path = request.getSession().getServletContext()
                .getRealPath("upload");
        String fileName = file.getOriginalFilename();
        //解決文件同名問(wèn)題
        fileName = UUID.randomUUID().toString().replace("-", "")+fileName.substring(fileName.lastIndexOf("."));
        File targetFile = new File(path, fileName);
        if (!targetFile.exists()) {
            targetFile.mkdirs();
        }
        // 保存
        try {
            file.transferTo(targetFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
        request.setAttribute("fileUrl", request.getContextPath() + "/upload/"
                + fileName);
        per.setFilepath(fileName);
        /*如果不涉及上傳則表單中不能設(shè)置enctype="multipart/form-data",
         */
        ps.updatePerson(per);
        return "redirect:listPerson.do";
    }
@RequestMapping("del")
    public String del(Person per) throws Exception {// 刪除
        ps.del(per.getPid());//刪除
        return "redirect:listPerson.do";
    }
@RequestMapping("delall")
    public String delAll(HttpServletRequest request) throws Exception {// 批量刪除
        String id=request.getParameter("id");//取過(guò)來(lái)批量刪除的id
        System.out.println("ok批量刪除:"+id);
        ps.delSelectAll(id);//刪除
        return "redirect:listPerson.do";
    }
    @RequestMapping("listPerson")
    public String listPerson(HttpServletRequest request) throws Exception {// 列表顯示
        String page = request.getParameter("currentPage") == null ? "1"
                : request.getParameter("currentPage");// 如果是空則為1,或則取頁(yè)數(shù)
        int currentPage = Integer.parseInt(page);// 當(dāng)前頁(yè)
        int pageSize = 3;// 當(dāng)前頁(yè)記錄大小
        int dataCount = ps.getCount();// 表記錄多少
        source = ps.list(currentPage, pageSize);
        request.setAttribute("list", source);
        PageUtils.page(request, currentPage, pageSize, source, dataCount);
        list=ds.list();//查詢出所有部門(mén)表
        System.out.println("perlistperson");
        return "list";
    }
    @RequestMapping("listlikePerson") 
   public String listlikePerson(HttpServletRequest request){//模糊查詢有分頁(yè)
        String page = request.getParameter("currentPage") == null ? "1"
                : request.getParameter("currentPage");// 如果是空則為1,或則取頁(yè)數(shù)
        int currentPage = Integer.parseInt(page);// 當(dāng)前頁(yè)
        String querypdept = request.getParameter("querypdept");
        String querypname = request.getParameter("querypname");
        System.out.println(querypdept+" ,"+querypname);
        int pageSize = 3;// 當(dāng)前頁(yè)記錄大小
        int dataCount = ps.getLikeCount("did:"+querypdept,"pname:"+querypname);// 表記錄多少
        source = ps.listLike(currentPage, pageSize,"did:"+querypdept,"pname:"+querypname);
//      System.out.println("source:"+source.size()+","+dataCount);
        request.setAttribute("list", source);
        PageUtils.page(request, currentPage, pageSize, source, dataCount);
        list=ds.list();//查詢出所有部門(mén)表
       return "list";
   }
    @RequestMapping("exportExcel") 
   public String exportExcel(HttpServletResponse response) throws Exception {
        
        // 初始化HttpServletResponse對(duì)象
        
        // 定義表的標(biāo)題
        String title = "員工列表一覽";
        
        //定義表的列名
        String[] rowsName = new String[] { "員工編號(hào)", "姓名", "性別", "特長(zhǎng)", "學(xué)歷",
                "入職時(shí)間", "簡(jiǎn)歷", "照片", "部門(mén)" };
        
        //定義表的內(nèi)容
        List<Object[]> dataList = new ArrayList<Object[]>();
        Object[] objs = null;
        List<Person> listPerson = ps.listAll();
        for (int i = 0; i < listPerson.size(); i++) {
            Person per = listPerson.get(i);
            objs = new Object[rowsName.length];
            objs[0] = per.getPid();
            objs[1] = per.getPname();
            objs[2] = per.getPsex();
            objs[3] = per.getSkilled();
            objs[4] = per.getDegree();
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            String date = df.format(per.getJobtime());
            objs[5] = date;
            objs[6] = per.getResume();
            objs[7] = per.getFilepath();
            objs[8] = per.getDept().getDname();
            dataList.add(objs);
        }
        
        // 創(chuàng)建ExportExcel對(duì)象
        ExportExcel ex = new ExportExcel(title, rowsName, dataList);

        // 輸出Excel文件
        try {
            OutputStream output = response.getOutputStream();
            response.reset();
            response.setHeader("Content-disposition",
                    "attachment; filename=personList.xls");
            response.setContentType("application/msexcel");
            ex.export(output);
            output.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return "tolist";// 返回列表顯示
    }
    @RequestMapping("importExcel") 
    public String importExcel(@RequestParam(value = "file", required = false) MultipartFile file,
            HttpServletRequest request) throws Exception {

        // 初始化HttpServletRequest對(duì)象
                String path = request.getSession().getServletContext()
                        .getRealPath("upload");
                String fileName = file.getOriginalFilename();
                //解決文件同名問(wèn)題
                fileName = UUID.randomUUID().toString().replace("-", "")+fileName.substring(fileName.lastIndexOf("."));
                File targetFile = new File(path, fileName);
                if (!targetFile.exists()) {
                    targetFile.mkdirs();
                }
                // 保存
                try {
                    file.transferTo(targetFile);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                // 獲取服務(wù)器中文件的路徑
                //把上傳文件保存在當(dāng)前路徑的 upload 文件夾中(服務(wù)器)
                String paths =request.getSession().getServletContext().getRealPath("")
                        + "/upload/" + fileName;

                // 上傳文件到服務(wù)器中
//              filename = FileUpload2.upload(filename, myfile);

                Person per = new Person();// 新建一個(gè)user對(duì)象
                Dept dept = new Dept();// 新建一個(gè)dept對(duì)象

                SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");


                try {
                    InputStream is = new FileInputStream(paths);
                    HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);

                    // 循環(huán)工作表Sheet
                    for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
                        HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
                        if (hssfSheet == null) {
                            continue;
                        }

                        // 循環(huán)行Row
                        for (int rowNum = 3; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
                            HSSFRow hssfRow = hssfSheet.getRow(rowNum);
                            if (hssfRow == null) {
                                continue;
                            }

                            // 循環(huán)列Cell
                            // "姓名","密碼","性別","愛(ài)好","簡(jiǎn)介","部門(mén)did"};
                            per.setPname(getValue(hssfRow.getCell(1)));
                            per.setPsex(getValue(hssfRow.getCell(2)));
                            per.setSkilled(getValue(hssfRow.getCell(3)));
                            per.setDegree(getValue(hssfRow.getCell(4)));
                            per.setJobtime(sd.parse(getValue(hssfRow.getCell(5))));
                            per.setResume(getValue(hssfRow.getCell(6)));
                            per.setFilepath(getValue(hssfRow.getCell(7)));

                            // 這里很重要,通過(guò)部門(mén)列表然后與excel中的部門(mén)字段進(jìn)行對(duì)比,匹配后獲取對(duì)應(yīng)的did
                            String dname = getValue(hssfRow.getCell(8));// 獲取excel中的部門(mén)字段
                            list = ds.list();// 得到數(shù)據(jù)庫(kù)中的部門(mén)列表
                            for (Dept dd : list) {// 增強(qiáng)for循環(huán)
                                if (dd.getDname().equals(dname)) {// 如果兩者匹配
                                    dept.setDid(dd.getDid());// 則得到對(duì)應(yīng)的did,并設(shè)置dept對(duì)象的did
                                    per.setDept(dept);// 再把dept對(duì)象設(shè)置到user對(duì)象中
                                }
                            }

                            ps.add(per);// 寫(xiě)入到數(shù)據(jù)中
                        }
                    }
                } catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }

                return "redirect:listPerson.do";// 返回列表顯示
    }

    /**
     * 得到Excel表中的值
     * 
     * @param hssfCell
     *            Excel中的每一個(gè)格子
     * @return Excel中每一個(gè)格子中的值
     */
    @SuppressWarnings("static-access")
    private static String getValue(HSSFCell hssfCell) {
        if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {
            // 返回布爾類型的值
            return String.valueOf(hssfCell.getBooleanCellValue());
        } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {
            // 返回?cái)?shù)值類型的值
            return String.valueOf(hssfCell.getNumericCellValue());
        } else {
            // 返回字符串類型的值
            return String.valueOf(hssfCell.getStringCellValue());
        }

    }
    public List<Dept> getList() {
        return list;
    }

    public void setList(List<Dept> list) {
        this.list = list;
    }

    public Person getPer() {
        return per;
    }

    public void setPer(Person per) {
        this.per = per;
    }

    public File getMyfile() {
        return myfile;
    }

    public void setMyfile(File myfile) {
        this.myfile = myfile;
    }

    public String getMyfileFileName() {
        return myfileFileName;
    }

    public void setMyfileFileName(String myfileFileName) {
        this.myfileFileName = myfileFileName;
    }

    public List<String> getPerlist() {
        return perlist;
    }

    public void setPerlist(List<String> perlist) {
        this.perlist = perlist;
    }

    public List<Person> getSource() {
        return source;
    }

    public void setSource(List<Person> source) {
        this.source = source;
    }
    @InitBinder// spring mvc中對(duì)時(shí)間進(jìn)行處理
    private void InitBinder(HttpServletRequest request,
            ServletRequestDataBinder binder) {
        // spring mvc中對(duì)時(shí)間進(jìn)行處理
    binder.registerCustomEditor(Date.class, new CustomDateEditor(
    new SimpleDateFormat("yyyy-MM-dd"), true));
    }
}

部門(mén)顯示是用ajax異步處理的

script type="text/javascript">
 $(function(){
 $.post("per/dept.do",function(msg){
 for(i=0;i<msg.length;i++){
 $("#querypdept").append("<option value="+msg[i].did+">"+msg[i].dname+"</option>");
 }
 });
 });
 </script>

修改頁(yè)面update.jsp回顯按如下代碼實(shí)現(xiàn)

<%@ page language="java" import="java.util.*" 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">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 's1.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  <script type="text/javascript" src="js/My97DatePicker/WdatePicker.js"></script></head>
  <script type="text/javascript"
    src="<%=request.getContextPath()%>/js/jquery-1.8.2.js"></script>
<script type="text/javascript"
    src="<%=request.getContextPath()%>/js/my.js" charset="gbk"></script>
<script type="text/javascript">
    $(function() {
        $.post("per/dept.do", function(msg) {
            for (i = 0; i < msg.length; i++) {
                $("#querypdept").append(
                        "<option value="+msg[i].did+">" + msg[i].dname
                                + "</option>");
            }
        });
    });
</script>
  <body>
  <center>
  <h2>用戶修改</h2>
        <form action="per/update.do" method="post" name="kk"
            enctype="multipart/form-data">
            <input type="hidden" name="pid" value="${per.pid }" />
            <table border=0 width=460 >
                <tr>
                    <td>姓名:<input type="text" name="pname" value="${per.pname }" /><br>
                        性別:<input type="radio" name="psex" value="男" ${per.psex=='男'?"checked='checked'":"" }>男<input
                        type="radio" name="psex" value="女"  ${per.psex=='女'?"checked='checked'":"" }>女<br> 個(gè)人特長(zhǎng):<input
                        type="checkbox" name="skilled" value="足球" ${b=='足球'?"checked='checked'":"" } >足球 <input
                        type="checkbox" name="skilled" value="籃球" ${d=='籃球'?"checked='checked'":"" } >籃球 <input
                        type="checkbox" name="skilled" value="唱歌" ${c=='唱歌'?"checked='checked'":"" } >唱歌
                        <input type="checkbox" name="skilled" value="武術(shù)" ${a=='武術(shù)'?"checked='checked'":"" }>武${a}術(shù)<br>
                        學(xué)歷:<select name="degree">
                            <option ${per.degree== "博士"?"selected='selected'":""}>博士</option>
                            <option ${per.degree== "研究生"?"selected='selected'":""}>研究生</option>
                            <option ${per.degree== "本科"?"selected='selected'":""}>本科</option>
                            <option ${per.degree== "????"selected='selected'":""}>專科</option>
                    </select><br> 入職時(shí)間: <input type="text" name="jobtime"
                        onclick="WdatePicker()" value="${per.jobtime }"><br>
                        上傳修改照片: <input type="file" name="file"><img src="<%=request.getContextPath()%>/upload/${per.filepath}" 
   width="85" height="100"><br> 部門(mén): <select
                        name="dept.did" id="querypdept"></select><br> 簡(jiǎn)歷: <textarea
                            name="resume" cols="20" rows="6">${per.resume }</textarea>
                    </td>
                </tr>
                <tr>
                    <td align="center" colspan="10"><input type=submit value="修改">
                        <input type=reset value="清空"></td>
                </tr>
            </table>
        </form>
    </center>
   
   
   
  </body>
</html>

controller toupdate代碼如下

    @RequestMapping("toupdate")
    public String toUpdate(HttpServletRequest request,Person per) throws Exception {// 到修改
        per=ps.getPerson(per.getPid());//獲取單個(gè)對(duì)象
        System.out.println(per.getFilepath());
        request.setAttribute("per",per);//存起來(lái)
        
        String []aa=per.getSkilled().split(",");
        for(int i=0;i<aa.length;i++){
         if(aa[i].equals("武術(shù)")){
             request.setAttribute("a",aa[i]);    
         }else if(aa[i].equals("足球")){
             request.setAttribute("b",aa[i]);    
         }else if(aa[i].equals("唱歌")){
             request.setAttribute("c",aa[i]);    
         }else if(aa[i].equals("籃球")){
             request.setAttribute("d",aa[i]);    
         }
         }
        return "update";
    }
鏈接:http://pan.baidu.com/s/1c10P9PA 密碼:clew
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,273評(píng)論 6 342
  • spring官方文檔:http://docs.spring.io/spring/docs/current/spri...
    牛馬風(fēng)情閱讀 1,856評(píng)論 0 3
  • 這篇文章是我在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時(shí)作筆記的用途,這篇文章會(huì)紀(jì)錄下我學(xué)習(xí)的幾種排序算法,以及在學(xué)習(xí)的時(shí)候會(huì)加上配圖說(shuō)明! ...
    凌云壯志幾多愁閱讀 1,714評(píng)論 0 3
  • 前幾天,看到海子說(shuō)“雷鋒是個(gè)好人”,不禁忍浚一笑,嘿嘿,詩(shī)歌王子的世界可真是于世無(wú)關(guān),好浪漫。而我們現(xiàn)在海量信息地...
    曾曉楓閱讀 479評(píng)論 0 1

友情鏈接更多精彩內(nèi)容