一. 部署UI資源
1. 將項目頁面復制到我的工程目錄下
2. 打開index.jsp發現代碼如圖:
發現如果訪問index.jsp會跳轉到login.do,所以需要在LoginController中編寫代碼,讓頁面跳轉到主頁面(main.jsp)
代碼如下(別忘了在類上加上@Controller注解):
@Controller public class LoginController { /** * 執行流程 * 1.訪問首頁 * http:localhost:8080/index.jsp * 2. index.jsp * location.href = "login.do" * 3. 轉發到main.jsp */ @RequestMapping("/login") public String login() { // 目前默認登錄成功跳轉到主頁main.jsp return "home/main"; } }
頁面將會跳轉到main.jsp
代碼如下:
LoginController代碼如下:
測試效果:
對於iframe標簽:
二. 添加企業
點擊新建按鈕會跳轉到company-add.jsp(顯示的數據代碼見昨天的代碼)
進入company-add.jsp中會發現,此表單的action為:
所以需要在CompanyController處理此請求:
/** * 進入添加頁面 * 功能入口: 企業列表點擊新建 * 請求地址:http:localhost:8080/company/toAdd.do * 響應地址: /WEB-INF/pages/company/company-add.jsp * * @return */ @RequestMapping("toAdd") public String toAdd() { return "company/company-add"; }
測試結果:
成功跳轉到添加頁面
查看company-add.jsp頁面發現最后表單的提交地址為:
在CompanyController中處理請求:
/** * 添加企業/修改企業 * * @param company * @return */ @RequestMapping("edit") public String edit(Company company) { // 根據id判斷是添加還是修改 if (StringUtils.isEmpty(company.getId())) { // 如果id是null companyService.save(company); } else { // 如果id不是null companyService.update(company); } // 添加成功,重定向到list界面 return "redirect:/company/list.do"; }
在此代碼中處理了兩個請求,一個是添加企業,另一個是修改企業(點擊編輯按鈕之后的保存按鈕)
根據是否請求是否有id來判斷是哪個請求,添加企業是沒有id的,但是修改企業是有id的。最后在service和dao中編寫方法,以及在mapper映射文件中配置
CompanyService代碼:
/** * 保存用戶 * @param company */ void save(Company company); /** * 修改用戶 * @param company */ void update(Company company);
CompanyServiceImpl代碼:
/** * 保存用戶 * @param company */ @Override public void save(Company company) { // 設置主鍵值 company.setId(UUID.randomUUID().toString()); companyDao.save(company); } /** * 修改用戶 * @param company */ @Override public void update(Company company) { companyDao.update(company); }
其中save()方法中要設置主鍵存入數據庫,因為如果不設置主鍵,第一次添加可以,但是第二次不行,因為主鍵會重復
所以直接在save()中設置主鍵
UUID.randomUUID()可以得到一個32位的全球唯一隨機碼
dao接口代碼:
/** * 保存用戶 * @param company */ void save(Company company); /** * 修改用戶 * @param company */ void update(Company company);
dao.xml配置文件代碼:
<!--保存企業--> <insert id="save"> insert into ss_company ( expiration_date, id, name, address, license_id, representative, phone, company_size, industry, remarks, state, balance, city ) VALUES ( #{expirationDate}, #{id}, #{name}, #{address}, #{licenseId}, #{representative}, #{phone}, #{companySize}, #{industry}, #{remarks}, #{state}, #{balance}, #{city} ) </insert> <!--更新企業--> <update id="update"> update ss_company set expiration_date=#{expirationDate}, name=#{name}, address=#{address}, license_id=#{licenseId}, representative=#{representative}, phone=#{phone}, company_size=#{companySize}, industry=#{industry}, remarks=#{remarks}, state=#{state}, balance=#{balance}, city=#{city} where id=#{id} </update>
頁面測試結果:
企業修改
查看company-list.jsp頁面發現:
在CompanyController中處理請求:
/** * 進入修改頁面 * 功能入口:company-list.jsp 列表點擊編輯 * 請求地址: http://localhost:8080/company/toUpdate.do * 請求參數:id 修改企業的id * 響應地址: /WEB-INF/pages/company/company-update.jsp */ @RequestMapping("toUpdate") public String toUpdate(String id, Model model) { // 根據企業id查詢 Company company = companyService.findById(id); // 保存 model.addAttribute("company", company); // 轉發 return "company/company-update"; }
service代碼:
/** * 根據企業id查詢企業 * @param id * @return */ Company findById(String id);
CompanyServiceImpl代碼:
/** * 根據企業id查詢企業 * @param id * @return */ @Override public Company findById(String id) { return companyDao.findById(id); }
dao代碼:
/** * 根據企業id查詢企業 * @param id * @return */ Company findById(String id);
mapper映射文件代碼:
<!--根據企業id查詢企業--> <select id="findById" resultMap="BaseResultMap"> SELECT * FROM ss_company WHERE id=#{id} </select>
頁面測試結果:
保存修改操作在上面已經做了!
刪除企業
查看company-list.jsp頁面代碼發現:
在CompanyController中處理請求:
/** * 刪除企業 * 功能入口: company-list.jsp * 請求地址:http://localhost:8080/company/delete.do?id=............ */ @RequestMapping("delete") public String delete(String id) { // 根據id刪除企業 companyService.delete(id); return "redirect:/company/list.do"; }
service代碼:
/** * 根據id刪除企業 * @param id */ void delete(String id);
CompanyServiceImpl代碼:
/** * 根據id刪除企業 * @param id */ @Override public void delete(String id) { companyDao.delete(id); }
dao層代碼:
/** * 根據id刪除企業 * @param id */ void delete(String id);
mapper映射文件代碼:
<!--根據id刪除企業--> <delete id="delete"> DELETE FROM ss_company WHERE id=#{id} </delete>