SSM的增刪改功能實現
controller層
@RequestMapping("/updUserById.do")
public String updUserById(UserInfo userInfo){
userInfoService.updUserById(userInfo);
return "redirect:findAll.do";
}
@RequestMapping("/addUser.do")
public String addUser(UserInfo userInfo){
userInfoService.addUser(userInfo);
return "redirect:findAll.do";
}
@RequestMapping("/delUser")
public String delUser(int id) {
userInfoService.delUser(id);
return "redirect:findAll.do";
}
DAO層
//更新前的查詢
UserInfo findUserById(int id);
//update
void updUserById(UserInfo userInfo);
//add;id,username,password
void addUser(UserInfo userInfo);
//delete
void delUser(int id);
List<UserInfo> findUserByName(String username);
//login
UserInfo doLogin(String username);
Servie接口層
//更新前的查詢
UserInfo findUserById(int id);
//update
void updUserById(UserInfo userInfo);
//add;id,username,password
void addUser(UserInfo userInfo);
void delUser(int id);
//模糊查詢
List<UserInfo> findUserByName(String username,int page,int size);
Service實現層
@Override
public UserInfo findUserById(int id) {
return userDao.findUserById(id);
}
@Override
public void updUserById(UserInfo userInfo) {
userDao.updUserById(userInfo);
}
@Override
public void addUser(UserInfo userInfo) {
userDao.addUser(userInfo);
}
@Override
public void delUser(int id) {
userDao.delUser(id);
}
@Override
public List<UserInfo> findUserByName(String username,int page,int size) {
return userDao.findUserByName(username);
}
SQL語句的實現
<select id="findUserById" parameterType="java.lang.Integer" resultType="com.zhongruan.bean.UserInfo">
select * from tb_user where id=#{id}
</select>
<update id="updUserById" parameterType="com.zhongruan.bean.UserInfo">
update tb_user set username={#username},password={#password} where id=#{id}
</update>
<insert id="addUser" parameterType="com.zhongruan.bean.UserInfo">
insert into tb_user(id,username,password) values (#{id},#{username},#{password})
</insert>
<delete id="delUser" parameterType="java.lang.Integer">
delete from tb_user where id=#{id}
</delete>
<select id="findUserByName" parameterType="java.lang.String" resultType="com.zhongruan.bean.UserInfo">
select * from tb_user where username like '%' #{username} '%'
</select>
登錄功能的實現
Controller層
//login
@RequestMapping("/doLogin.do")
public String doLogin(String username, String password, HttpSession session){
UserInfo userInfo=userInfoService.doLogin(username);
if (userInfo !=null){
if (userInfo.getPassword().equals(password)){
System.out.println("登錄成功");
session.setAttribute("userInfo",userInfo);
return "main";
}else{
System.out.println("密碼錯誤,請重新登錄!");
session.setAttribute("message","密碼錯誤,請重新輸入!");
return "../login";
}
}else {
System.out.println("用戶不存在,請重新輸入!");
session.setAttribute("message","用戶不存在,請重新輸入!");
return "../login";
}
}
}
DAO層
//login
UserInfo doLogin(String username);
Service接口層
UserInfo doLogin(String username);、
Service實現層
@Override
public UserInfo doLogin(String username) {
return userDao.doLogin(username);
}
}
SQL語句
<select id="doLogin" resultType="com.zhongruan.bean.UserInfo" parameterType="java.lang.String">
select * from tb_user where username=#{username}
</select>
分頁管理的實現
Controller層
@RequestMapping("/user")
public class UserInfoController {
@Autowired
private UserInfoService userInfoService;
@RequestMapping("/findAll.do")
public ModelAndView findAll(@RequestParam(defaultValue="1") int page, @RequestParam(defaultValue = "5") int size){
List<UserInfo> userInfoList=userInfoService.findAll(page,size);
//把得到的結果集 給到pagehelper中得到內置對象PageInfo中
PageInfo pageInfo=new PageInfo(userInfoList);
ModelAndView mv = new ModelAndView();
mv.addObject("pageInfo",pageInfo);
mv.setViewName("user-list");
return mv;
}
DAO層
//全部查詢
List<UserInfo> findAll();
Service接口層
//全部查詢
List<UserInfo> findAll(int page,int size);
Service實現層
@Override
public List<UserInfo> findAll(int page, int size) {
//開啟分頁信息
PageHelper.startPage(page,size);
return userDao.findAll();
}
課后問題
請求轉發forward 和 重定向redirect的區別
轉發是服務器行為,重定向是客戶端行為。
轉發過程:客戶瀏覽器發送http請求——》web服務器接受此請求——》調用內部的一個方法在容器內部完成請求處理和轉發動作——》將目標資源發送給客戶;在這里,轉發的路徑必須是同一個web容器下的url,其不能轉向到其他的web路徑上去,中間傳遞的是自己的容器內的request。在客戶瀏覽器路徑欄顯示的仍然是其第一次訪問的路徑,也就是說客戶是感覺不到服務器做了轉發的。轉發行為是瀏覽器只做了一次訪問請求。
重定向過程:客戶瀏覽器發送http請求——》web服務器接受后發送302狀態碼響應及對應新的location給客戶瀏覽器——》客戶瀏覽器發現是302響應,則自動再發送一個新的http請求,請求url是新的location地址——》服務器根據此請求尋找資源并發送給客戶。在這里location可以重定向到任意URL,既然是瀏覽器重新發出了請求,則就沒有什么request傳遞的概念了。在客戶瀏覽器路徑欄顯示的是其重定向的路徑,客戶可以觀察到地址的變化的。重定向行為是瀏覽器做了至少兩次的訪問請求的。-
get和post的優缺點
在這里插入圖片描述 PageHelper的參數
//當前頁
private int pageNum;
//每頁的數量
private int pageSize;
//當前頁的數量
private int size;
//由于startRow和endRow不常用,這里說個具體的用法
//可以在頁面中"顯示startRow到endRow 共size條數據"
//當前頁面第一個元素在數據庫中的行號
private int startRow;
//當前頁面最后一個元素在數據庫中的行號
private int endRow;
//總記錄數
private long total;
//總頁數
private int pages;
//結果集
private List list;
//第一頁
private int firstPage;
//前一頁
private int prePage;
//是否為第一頁
private boolean isFirstPage = false;
//是否為最后一頁
private boolean isLastPage = false;
//是否有前一頁
private boolean hasPreviousPage = false;
//是否有下一頁
private boolean hasNextPage = false;
//導航頁碼數
private int navigatePages;
//所有導航頁號
private int[] navigatepageNums;