第6个练习 卡片管理系统(SSM框架)

第6个练习的记录

 

效果图1

 

效果图2

 

 

效果图3

 

效果图4

 

效果图5

 

效果图6

 

效果图7 卡组页面

 

效果图8 二级联动下的增删改查

 

效果图9 图书管理页面

 

效果图10 上传图片功能

 

项目列表1

 

 

项目列表2

 

MVC三层

Controller层

复制代码
  1 package shanhai.controller;
  2 
  3 import java.io.UnsupportedEncodingException;
  4 import java.util.HashMap;
  5 import java.util.Map;
  6 
  7 import javax.servlet.http.Cookie;
  8 import javax.servlet.http.HttpServletRequest;
  9 import javax.servlet.http.HttpServletResponse;
 10 import javax.servlet.http.HttpSession;
 11 
 12 import org.springframework.beans.factory.annotation.Autowired;
 13 import org.springframework.stereotype.Controller;
 14 import org.springframework.ui.Model;
 15 import org.springframework.web.bind.annotation.RequestMapping;
 16 import org.springframework.web.bind.annotation.RequestMethod;
 17 import org.springframework.web.bind.annotation.ResponseBody;
 18 
 19 import shanhai.pojo.Card;
 20 import shanhai.pojo.Logininfo;
 21 import shanhai.pojo.QueryVo;
 22 import shanhai.pojo.User;
 23 import shanhai.service.CardService;
 24 import utils.Page;
 25 
 26 @Controller
 27 public class CardController {
 28     @Autowired
 29     private CardService c;
 30 //    HttpServletRequest request;
 31 //    HttpServletResponse response;
 32     
 33     @RequestMapping(value = "/card/list")                        // 分页
 34     public String list(QueryVo vo,Model model) throws UnsupportedEncodingException{
 35         
 36         Page<Card> page = c.selectPageByQueryVo(vo);              // 条件查询
 37         
 38         int currentPage_number = page.getPage();                // 当前页数,
 39         if(currentPage_number < 1) {currentPage_number = 1;}    // 条件查询后为0,要设置成1 
 40         
 41         int total = page.getTotal();                            // 总记录数
 42         int size = page.getSize();                                // 每页显示条数
 43         int tP = (int) Math.ceil(total/size);                    // 总页数tP,向上取整
 44         if(true){tP+=1;}                                        // 比实际值要少1,所以要+1
 45         
 46         model.addAttribute("page", page);
 47         model.addAttribute("Total_number", total);
 48         model.addAttribute("totalPage_number", tP);
 49         model.addAttribute("currentPage_number", currentPage_number);
 50         model.addAttribute("Size_number", size);
 51         
 52         model.addAttribute("Name", vo.getName());    
 53         model.addAttribute("Race", vo.getRace());
 54         
 55         return "card";
 56         
 57     }
 58     
 59     @RequestMapping(value = "/card/add.action",method=RequestMethod.POST)            
 60     public String Edit(Card card,Model model){                // 添加数据
 61         c.addCard(card);
 62         return "card";
 63     }
 64     
 65     @RequestMapping(value = "/card/showFormCard.action",method=RequestMethod.POST)    
 66     public @ResponseBody
 67     Card showFormCard(Integer id,Model model){                // id查询
 68         return c.showFormCard(id);    
 69     }
 70     
 71     @RequestMapping(value = "/card/modalUpdateSubmit.action")    
 72     public @ResponseBody                
 73     String updateSubmit(Card card,Model model){                // 修改数据    
 74         c.updateSubmit(card);
 75         return "OK";
 76     }
 77     
 78     @RequestMapping(value = "/card/delete.action")    
 79     public @ResponseBody                
 80     String deleteAjax(Integer id,Model model){                // 删除数据    
 81         c.deleteAjax(id);
 82         return "OK";
 83     }
 84     
 85     
 86     @RequestMapping(value = "/user/login.action",method=RequestMethod.GET)
 87     public String intoLogin(){                                // 进入登录的jsp页面    
 88         return "login";                                        
 89     }
 90     
 91     @RequestMapping(value = "/user/userLogin.action")        // 接收用户登录的信息    
 92     public String userlogin(User user,Model model,HttpSession session,
 93             String rememberme,String remembermePassword, String autoLogin,
 94             HttpServletRequest request, HttpServletResponse response) 
 95             throws UnsupportedEncodingException{    
 96         boolean s = c.userLogin(user);            // 如果用户信息存在,值为true  即登录成功,反之失败
 97         String loginUser = user.getUsername();    // 从接收参数上取用户名  虽密码错误,但要重进登录ye
 98         
 99         String logintime = c.logintime(user);                // 2 上次访问时间 
100         int loginNumber = c.loginNumber(user);                // 12 历史登录次数
101         
102         User myProfileUser = c.myProfileName(user);            // 我的资料 显示名称(非用户名)
103 //        System.out.println("登录时,db查询,是个对象,而非str: " + myProfileUser);  //若get则空指针
104         
105         String usernameOfIfelse = null;                // 7 判断从db中查询到的结果是否为null  
106         if(c.getUsername(loginUser)==null) {        // 从db获取用户名,若为空则进入错误提示
107             usernameOfIfelse ="db查询结果为null,若获得用户名则空指针";
108         } else{
109             usernameOfIfelse = user.getUsername();  
110         }
111         
112         // 14 记住用户名  通过形参rememberme传递
113 //        System.out.println("记住用户名时传递的input值 " + rememberme);
114 //        remembermeUserName(user,rememberme,request,response);
115         
116         // 16 记住用户名和密码
117 //        System.out.println("记住用户名和密码时,传递的input值: " + remembermePassword);
118         remembermePassword(user,remembermePassword,request,response);
119         
120         if(s){                                                        // 若用户信息存在,登录成功
121             session.setAttribute("logintime", logintime);            // 上次登录时间
122             session.setAttribute("loginNumber", loginNumber);         // 历史登录次数(算本次)
123             session.setAttribute("loginUserName",loginUser);        //  myProfileUserName
124             session.setAttribute("myProfileUser", myProfileUser);    // 显示在我的资料页面
125             session.setAttribute("newMy", myProfileUser.getMy());    // 第一次进入我的资料页面显示个性签名
126             return "forward:/user/loginSuccess";                    // 设session,进登录成功的ye
127         } else 
128             // 7 在这里判断,虽然登录失败了,但是否是用户名正确,密码错了的情况?若是,则进入登录页面
129             if(loginUser == usernameOfIfelse){    // 登录的用户名和查询的结果(已除去空指针)相等  
130             session.setAttribute("UsePasswordError", 
131                     "用户名正确,但密码错误,请检查用户名和密码,并重新输入");
132             return "redirect:/user/login.action";                // 重新进入登录ye
133             } else {
134                 // 6 登录失败时,提示信息
135                 session.setAttribute("loginFailure", "用户登录失败,请注册");      
136                 return "redirect:/user/toRegister.action";        // 重定向到新的方法,去注册    
137             }
138     }
139     
140     // 14 记住用户名,在登录的方法之中再调用的()
141     /*public void remembermeUserName(User user,String rememberme) 
142         throws UnsupportedEncodingException {
143         
144         request.setCharacterEncoding("utf-8");
145         response.setCharacterEncoding("utf-8");
146             
147         if("1".equals(rememberme)){            // rememberme有空指针的可能性  由数字改为str即无
148 //            System.out.println("记住用户名: " + rememberme);
149             Cookie remembermeCookie = new Cookie("remembermeCookie",user.getUsername());
150             remembermeCookie.setPath("/");
151             remembermeCookie.setMaxAge(60*60*24*7);
152             response.addCookie(remembermeCookie);
153         } else if(rememberme == null){    
154             // 当没有勾选"记住用户名"时,要清理掉上次可能保存下来的用户名
155             Cookie remembermeCookie = new Cookie("remembermeCookie",user.getUsername());
156             remembermeCookie.setPath("/");
157             remembermeCookie.setMaxAge(0);
158             response.addCookie(remembermeCookie);
159         }
160         
161     } */// 14 记住用户名  登录的方法中再调用的()
162     
163     // 16 记住用户名和密码,在登录的方法中再调用的()
164     void remembermePassword(User user,String remembermePassword,
165             HttpServletRequest request, HttpServletResponse response) 
166         throws UnsupportedEncodingException {        
167         request.setCharacterEncoding("utf-8");
168         response.setCharacterEncoding("utf-8");
169         
170 //        System.out.println("记住用户名和密码: " + remembermePassword);
171         if("1".equals(remembermePassword)){            
172             Cookie remembermeCookie = new Cookie(
173                     "remembermeCookie",user.getUsername());
174             remembermeCookie.setPath("/");
175             remembermeCookie.setMaxAge(60*60*24*7);
176             response.addCookie(remembermeCookie);          // 往cookie中存入用户名
177             
178             Cookie remembermeCookiePassword = new Cookie(
179                     "remembermeCookiePassword",user.getPassword());
180             remembermeCookiePassword.setPath("/");
181             remembermeCookiePassword.setMaxAge(60*60*24*7);
182             response.addCookie(remembermeCookiePassword);        // 往cookie中存入密码
183             
184 //            System.out.println(user.getUsername() + ":" +user.getPassword());
185             
186         } else if(remembermePassword == null){    
187             // 未勾选"记住用户名和密码"时,要清理掉上次可能保存下来的密码,用户名!!!
188             
189             Cookie remembermeCookie = new Cookie(
190                     "remembermeCookie",user.getPassword());
191             remembermeCookie.setPath("/");
192             remembermeCookie.setMaxAge(0);
193             response.addCookie(remembermeCookie);                    // 未勾选时,清除密码
194             
195             Cookie remembermeCookiePassword = new Cookie(
196                     "remembermeCookiePassword",user.getPassword());
197             remembermeCookiePassword.setPath("/");
198             remembermeCookiePassword.setMaxAge(0);
199             response.addCookie(remembermeCookiePassword);            // 未勾选时,清除密码
200         }
201     }
202     
203     @RequestMapping(value = "/user/loginSuccess")
204     public String LoginSuccess(User user, Model model){            // 进入登录成功的页面
205         return "LoginSuccess";                                
206     }
207     
208     @RequestMapping(value = "/user/homepage.action")        
209     public String homepage(User user,Model model) {                // 登录成功的页面进入主页面
210         return "redirect:/card/list";                
211     }
212     
213     @RequestMapping("/user/toRegister.action")                    // 进注册的ye    
214     public String toRegisterJsp(HttpSession session) {            // 方式一,注册链接,二登录失败时
215         return "register";    
216     }
217     
218     @RequestMapping(value = "/user/register.action")    
219     public String userRegister (User user,Model model){        // 查询用户信息不一致时,去注册页面
220         c.userRegister(user);                                  // 假设数据格式正确,所以不用返回值
221         return "redirect:/user/login.action";    
222     }
223     
224     @RequestMapping(value = "/user/logOut.action")
225     public String logOut(HttpSession session) {                // 暂时不考虑Cookie,当有时则要删除
226         session.removeAttribute("loginUserName");            // 从session中将user删除
227         return "redirect:/card/list";
228     }
229     
230     @RequestMapping(value = "user/ajaxUserName.action") 
231     public @ResponseBody 
232     Map<String,Object> ajaxUserName(String username,Model model) {    // 校验用户名是否可以注册
233         
234         Map<String,Object> resultMap = new HashMap<String, Object>();
235         boolean isExist = c.ajaxUserName(username);                    // 用户不存在时,false
236         
237         resultMap.put("isExist", isExist);
238         return resultMap;
239     }
240     
241     @RequestMapping(value = "/user/myProfile.action")        
242     public String myProfile (Model model){                    //     查看我的资料中的用户名
243         return "myProfile";                                    // 进入 我的资料页面
244     }
245     
246     @RequestMapping(value = "/user/updateMyProfile.action")                // 更新我的资料
247     public String updateMyProfile (String loginUserName,String myProfileName,
248             String my ,String userInfo,Model model,HttpSession session){            
249 //        System.out.println("长文本提交的用户信息: " + userInfo);
250         
251         c.updateMyProfile(loginUserName,myProfileName,my,userInfo);        // 通过用户名改名称
252         
253         // 由于修改input后,重定向到我的资料,值还是原值,所以下4行代码解决这个问题
254         // 修改成功后,显示的是原值,虽然数据表已经更新,我在我的资料页面中input中三元运算符判断了
255         
256         // 需要更新后的用户,用于显示     
257         User u = c.updateShow(loginUserName,myProfileName,my,userInfo);  
258         session.setAttribute("newUpdate", u.getName());     // 在我的资料ye中显示修改后的名称
259         session.setAttribute("newMy", u.getMy());
260         session.setAttribute("newUserInfo", u.getUserInfo());
261         
262         return "redirect:/user/myProfile.action";                                
263     }
264     
265     @RequestMapping(value = "/baidu.action")
266     public String baidu() {                                      // 进入百度一下的主页的方式1
267         return "redirect:http://www.baidu.com";
268     }
269     
270     @RequestMapping(value = "/user/UpdatePassword.action",
271             produces = "text/html;charset=UTF-8")                // 4 据用户名修改密码 修改版
272     public @ResponseBody
273         String updatePassword(String usernameUpdatePassword, String password1,
274                 String password2,String updatePassword) {      // 目前接收session值的方式    
275         
276         // 如果我们不希望抛出500错误页面,但仍需要进行事务回滚
277         // 那么我们就要在controller中将service实现类抛出的异常捕获
278         try {
279             boolean b = c.updatePassword(usernameUpdatePassword,password1,
280                     password2,updatePassword);
281             return "修改密码成功";
282         } catch (Exception e) {            //  如果捕获了异常,说明修改密码失败
283             return "修改密码失败";
284         }
285         
286     }
287     
288     @RequestMapping(value = "user/securityQuestion.action"
289             ,produces = "text/html;charset=UTF-8")
290     public @ResponseBody String security_Question(Logininfo logininfo){        // 8 设置密保问题
291         c.sQ(logininfo);
292         
293         return "目前默认修改成功";
294     }
295     
296     @RequestMapping(value = "/user/toForGet.action")
297     public String forGetPassword() {                        // 9 忘记密码
298         return "sQJSP";                                        // 进入,忘记密码时,重设密码的页面
299         
300     }
301     
302     /*@RequestMapping(value = "/user/toSQ.action",produces = "text/html;charset=UTF-8") 
303     public @ResponseBody 
304         String toSQ(Logininfo logininfo) {                    // 9 忘记密码,重设后的密码提交到此
305         // 如果我们不希望抛出500错误页面,但仍需要进行事务回滚
306         // 那么我们就要在controller中将service实现类抛出的异常捕获
307         try {
308             boolean b = c.forGetPassword(logininfo);
309             return "通过密保问题修改密码成功";
310         } catch (Exception e) {
311             return "密保问题修改密码失败,已经通过事务回滚";    // 如果捕获了异常,说明修改密码失败
312         }
313     }*/
314     
315     @RequestMapping(value = "/user/toSQ.action") 
316     // 9 忘记密码,进行密保问题答案的验证
317     public String toSQ(Logininfo logininfo,HttpSession session) {                
318         // 如果我们不希望抛出500错误页面,但仍需要进行事务回滚
319         // 那么我们就要在controller中将service实现类抛出的异常捕获
320         try {
321             boolean b = c.forGetPassword(logininfo);
322             session.setAttribute("sQusername", logininfo.getUsername());
323             return "sqPassword";
324         } catch (Exception e) {
325             return "login";    // 如果捕获了异常,说明修改密码失败
326         }
327     }
328     
329     @RequestMapping(value = "user/sQUpdatePassword.action")
330     public String tosQ(String sQusername, String sQupdatePassword){      // 9 密保问题验证,设密码
331         c.sQUpdatePassword(sQusername,sQupdatePassword);              // 重设后的密码提交到此
332         return "redirect:/user/login.action";
333     }
334 
335 /*    @RequestMapping(value = "/card/.action")        // 路径 
336     public @ResponseBody                            // 返回json注解                
337     String method (Model model){                    // 形参,mode往前台传值            
338         // 调用service层接口  c.方法名(形参);
339         model.addAttribute("", );
340         return "forward:/user/";                    // 转发
341         return "redirect:/card/list";                // 重定向
342         return "card";                                // 进入card.jsp
343         return "OK";                                // ?
344     }
345 */
346     
347     
348 /*    @RequestMapping(value = "/baidu.action")
349     public void baidu(HttpServletResponse response) throws IOException {
350         response.sendRedirect("https://www.baidu.com");        // 进入百度一下的主页的方式2
351     } */
352     
353 }
CardController
复制代码
复制代码
  1 package shanhai.controller;
  2 
  3 import java.sql.Date;
  4 import java.util.List;
  5 
  6 import javax.servlet.http.HttpSession;
  7 
  8 import org.springframework.beans.factory.annotation.Autowired;
  9 import org.springframework.stereotype.Controller;
 10 import org.springframework.ui.Model;
 11 import org.springframework.web.bind.annotation.RequestMapping;
 12 import org.springframework.web.bind.annotation.RequestMethod;
 13 import org.springframework.web.bind.annotation.ResponseBody;
 14 
 15 import shanhai.pojo.Books;
 16 import shanhai.pojo.Card;
 17 import shanhai.pojo.magic_trapCard;
 18 import shanhai.service.DeckService;
 19 
 20 @Controller
 21 public class DeckController {
 22     
 23     @Autowired
 24     private DeckService c;
 25     
 26     // 38 查询当前月份的书籍            
 27     @RequestMapping(value = "/readingDateQuery.html",params={"Query136"},
 28             method=RequestMethod.GET)
 29     public String ReadingDateQuery136(Integer Query136,HttpSession session){
 30 //        System.out.println(Query136);
 31         List<Books> BookList = c.ReadingDateQuery136(Query136);
 32         session.setAttribute("BookList", BookList);
 33         
 34         return "book";
 35     }
 36     
 37     /*@RequestMapping(value = "/deck/BookReadingDateQuery136")        // 38 查询当前月份的书籍            
 38     public String ReadingDateQuery136(Integer Query136, HttpSession session){
 39         
 40         List<Books> BookList = c.ReadingDateQuery136(Query136);
 41         session.setAttribute("BookList", BookList);
 42         
 43         return "book";
 44     }*/
 45     
 46     @RequestMapping(value = "/deck/BookReadingDateQuery")            // 38 书籍据时间段查询            
 47     public String ReadingDateQuery(Date startDateQuery,Date endDateQuery,
 48             HttpSession session){
 49         List<Books> BookList = null;
 50         
 51         BookList = c.ReadingDateQuery(startDateQuery,endDateQuery);
 52         
 53         session.setAttribute("BookList", BookList);
 54         
 55         return "book";
 56     }
 57     
 58     @RequestMapping(value = "/deck/deletesMagicTrap")            // 35 批量删除魔陷
 59     public String deletesMagicTrap(Integer[] ids,String deletesCardId,
 60             HttpSession session){        
 61         String str = deletesCardId.substring(0, deletesCardId.indexOf(","));  // 截取,前的部分
 62         
 63         if(ids != null && ids.length != 0){
 64             /*for (Integer integer : ids) {
 65                 System.out.println("批量删除魔陷时,提交的id数组为: " + integer);
 66             }*/
 67             c.deletesMagicTrap(ids,str);
 68         }
 69         
 70 //        List<magic_trapCard> magic_trapList = c.magic_trapOption(magic_trapOne,magic_trapTwo);
 71 //        session.setAttribute("magic_trapList", magic_trapList);
 72         
 73 //        return "magic_trapDeck";
 74 //        return "redirect:/deck/magic_trapList";        // 重定向到,进入菜单-魔陷
 75 //        return "forward:/deck/magic_trapList";        // 转发到,进入 菜单-魔陷
 76 //        return "forward:/deck/magic_trapOption";    // 转发到,进入 列表联动
 77         
 78         // 36 为了显示出操作后的页面效果,所以在这里利用str查询db
 79         List<magic_trapCard> magic_trapList = c.magic_trapOptionStr(str);
 80         session.setAttribute("magic_trapList", magic_trapList);
 81         return "magic_trapDeck";
 82     }
 83     
 84     @RequestMapping(value = "/deck/deleteMagicTrap")    
 85     public @ResponseBody                
 86     String deleteMagicTrap(Integer magicTrapId,String cardType,Model model){    // 34 单次删除
 87         c.deleteMagicTrap(magicTrapId,cardType);
 88         return "OK";
 89     }
 90     
 91     @RequestMapping(value = "/deck/modalUpdateSubmitMagicTrap")    
 92     public @ResponseBody                
 93     String updateSubmitMagicTrap(magic_trapCard mt,Model model){    // 33魔陷修改 模态框提交的修改的值    
 94         c.updateSubmitMagicTrap(mt);
 95         return "OK";
 96     }
 97     
 98     @RequestMapping(value = "/deck/showFormMagicTrap")    
 99     public @ResponseBody
100     // 32 魔陷  模态框显示魔陷卡信息,查询    修改魔限卡时,提交的ID为magicTrapId,类型为cardType
101     magic_trapCard showFormMagic_trap(Integer magicTrapId,String cardType,Model model){        
102         // 二级联动 据ID查询的魔限卡信息为:
103         magic_trapCard mt = c.showFormMagicTrap(magicTrapId,cardType);    
104         return mt;
105     }
106     
107     @RequestMapping(value = "/deck/addMagic_trap")            
108     public String Magic_trap(magic_trapCard mt,Model model){                // 31 添加魔陷
109         c.addMagic_trap(mt);
110         return "magic_trapDeck";
111     }
112     
113     
114     @RequestMapping(value = "/deck/deletesBook.action",method=RequestMethod.POST)    
115     public String deletesBook(Integer[] ids,HttpSession session){            // 27 批量删除书籍
116         if(ids != null && ids.length != 0){
117             /*for (Integer integer : ids) {
118                 System.out.println("批量删除书籍时,提交的id数组为: " + integer);
119             }*/
120             c.deletesBook(ids);
121         }
122         
123         List<Books> BookList = c.BookList();             // 23 菜单 书籍再查询一遍db中的书籍列表
124         session.setAttribute("BookList", BookList);
125         
126         return "book";
127     }
128     
129     @RequestMapping(value = "/deck/deleteBook.action")    
130     public @ResponseBody                
131     String deleteBook(Integer id,Model model){                // 26 删除书籍
132         c.deleteBook(id);
133         return "OK";
134     }
135     
136     @RequestMapping(value = "/deck/modalUpdateSubmitBook.action")    
137     public @ResponseBody                
138     String updateSubmitBook(Books books,Model model){    // 25 书籍修改 模态框提交的修改的值    
139         c.updateSubmitBook(books);
140         return "OK";
141     }
142     
143     @RequestMapping(value = "/deck/showFormBook.action")    
144     public @ResponseBody                                
145     Books showFormBook(Integer id,Model model){        // 25 书籍修改  模态框显示书籍信息,查询
146         return     c.showFormBook(id);                    // 查询到的书籍信息,id修改书籍时,提交的书名
147     }
148     
149     @RequestMapping(value = "/deck/addBook.action")            
150     public String addBook(Books books,Model model){                // 24 添加书籍
151         c.addBook(books);
152         return "book";
153     }
154     
155     @RequestMapping(value = "/book/list")
156     public String MenuBook(HttpSession session) {
157         List<Books> BookList = c.BookList();                             // 23 菜单 书籍
158         session.setAttribute("BookList", BookList);
159         return "book";
160     }
161     
162     @RequestMapping(value = "/deck/magic_trapOption")                    // 22 魔陷卡组列表
163     public String magic_trapOption(String magic_trapOne,String magic_trapTwo,
164             HttpSession session) {                                        // 形参为两个列表提交
165         List<magic_trapCard> magic_trapList = c.magic_trapOption(magic_trapOne,magic_trapTwo);
166         
167         session.setAttribute("magic_trapList", magic_trapList);
168         return "magic_trapDeck";
169     }
170     
171     @RequestMapping(value = "/deck/magic_trapList")                        // 22 菜单新增魔陷卡组
172     public String magic_trapDeck() {
173         return "magic_trapDeck";
174     }
175     
176     @RequestMapping(value = "deck/list")
177     public String deck(String deckOne, String deckTwo,String deckInfo,
178             HttpSession session) {                    // 17 卡组联动 参数:第一分类,第二分类
179         List<Card> SelectDeckList = c.selectDeck(deckOne,deckTwo);                                        // 17 补全
180         
181         String newDeckInfo = c.deckInfo(deckOne,deckTwo);                    // 19 卡组信息
182         
183         session.setAttribute("deckIdList",SelectDeckList);
184         session.setAttribute("deckInfo",newDeckInfo);
185         
186         return "deck";
187     }
188     
189     /*@RequestMapping(value = "deck/list")
190     public String deck(Integer deckId, HttpSession session) {            // 13 选择卡组
191         System.out.println("接收到的选择的卡组ID为: " + deckId);
192         
193         List<Card> SelectDeckList = c.deckId(deckId);
194 //        System.out.println("据列表提交的值,从db中查询到的卡组,遍历结果为: " + SelectDeckList);
195         
196         if(SelectDeckList == null) {
197             System.out.println("结果为null");
198         } else {
199             for (Card card : SelectDeckList) {
200                 System.out.println(card);        // 据列表提交的值,db中查询到的卡组,遍历结果
201             }
202         }
203         
204         session.setAttribute("deckIdList",SelectDeckList);
205         return "deck";
206     }*/
207     
208 
209 /*    @RequestMapping(value = "/card/.action")        // 路径 
210 public @ResponseBody                            // 返回json注解                
211 String method (Model model){                    // 形参,mode往前台传值            
212     // 调用service层接口  c.方法名(形参);
213     model.addAttribute("", );
214     return "forward:/user/";                    // 转发
215     return "redirect:/card/list";                // 重定向
216     return "card";                                // 进入card.jsp
217     return "OK";                                // ?
218 }
219 */
220     
221 }    // DeckController类的结束    
DeckController
复制代码
复制代码
package shanhai.controller;

import java.io.File;
import java.util.List;
import java.util.UUID;

import javax.servlet.http.HttpSession;

import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import shanhai.pojo.Picture;
import shanhai.service.PictureService;

@Controller
@RequestMapping(value ="/picture")
public class PictureController {

    @Autowired
    private PictureService cP;

    @RequestMapping(value = "/list")                    // 新增 查看图片列表
    public ModelAndView methodPicture (HttpSession session,Model model){
        // 根据数据表中存储的名称,查看本地磁盘中的图片
        List<Picture> pictureList = cP.queryAll();

        /*for (Picture a : pictureList) {
            System.out.println("list中的图片类的名称为: " + a.getPicName());
        }*/
        
        ModelAndView mav = new ModelAndView();
        mav.addObject("pictureList", pictureList);
        mav.setViewName("picture");
        return mav;                                
    }
    
    @RequestMapping(value = "/picture2",method=RequestMethod.POST)
    // 形参名称要和form中的nmae相同
    public String updateitem(MultipartFile pictureFile) throws Exception{
        // 假设接收到的图片名称是1
        
        // 保存图片到 
        // 为了处理出现重名现象, 将原始文件名去掉,通过UUID算法生成新的文件名
        String name = UUID.randomUUID().toString().replaceAll("-", "");
        
        // jpg
        String ext = FilenameUtils.getExtension(pictureFile.getOriginalFilename());
            
        // 指定带盘符的路径,物理路径
        pictureFile.transferTo(new File("D:\\upload\\" + name + "." + ext));
        
        String picName = new String(name + "." + ext);
        
        cP.addPicName(picName);        // 在数据表中保存图片的名称
        
        return "redirect:/picture/pictureShow.action?picName=" + picName;
    }    

    @RequestMapping(value = "/pictureShow.action")         
    public ModelAndView show1 (String picName,HttpSession session,Model model){    
        
        ModelAndView mav = new ModelAndView();
        mav.addObject("picName", picName);                // 接收到的licName值
        mav.setViewName("picture");
        return mav;
    }
    
    /*@RequestMapping(value = "/picture/video/list")     // 已使用多请求路径,请注意
    public String showVideo() {                            // 显示静态资源的视频
        return "video";
    }*/
    
    /* @RequestMapping(value = "/card/.action")         
    public @ResponseBody                                        
    String method (Model model){                                
        // 调用service层接口  c.方法名(形参);
        model.addAttribute("", );
        return "forward:/user/";                    
        return "redirect:/card/list";                
        return "card";                                
    }
    */
}
PictureController
复制代码

 

Tomcat的配置

 

复制代码
  1 package shanhai.controller;
  2 
  3 import java.util.List;
  4 
  5 import javax.servlet.http.HttpServletRequest;
  6 import javax.servlet.http.HttpSession;
  7 
  8 import org.springframework.beans.factory.annotation.Autowired;
  9 import org.springframework.stereotype.Controller;
 10 import org.springframework.ui.Model;
 11 import org.springframework.web.bind.annotation.PathVariable;
 12 import org.springframework.web.bind.annotation.RequestBody;
 13 import org.springframework.web.bind.annotation.RequestMapping;
 14 import org.springframework.web.bind.annotation.RequestMethod;
 15 import org.springframework.web.bind.annotation.RequestParam;
 16 import org.springframework.web.bind.annotation.ResponseBody;
 17 
 18 import shanhai.pojo.UserTest;
 19 
 20 @Controller
 21 public class TestController {
 22     
 23     @Autowired
 24     HttpServletRequest request;
 25     
 26     @RequestMapping(value="/test/Test53",method=RequestMethod.POST)
 27     public @ResponseBody UserTest requestBody53(                        // 53 写注释
 28             @RequestBody List<UserTest> usertestList){
 29         
 30         System.out.println(usertestList);
 31         
 32         UserTest uT = usertestList.get(2);
 33         System.out.println("List中取出第三个对象: " + uT);
 34         
 35         for(UserTest u : usertestList){
 36             System.out.println("姓名:" + u.getUserName() +"," + 
 37                         "密码:" + u.getPassWord()+
 38                         "别称:" + u.getName());
 39         }
 40         
 41         return uT;
 42     }
 43     
 44     @ResponseBody
 45     @RequestMapping(value="/test/requestBodyTest52.action",method=RequestMethod.POST)
 46 //    public String requestBody52(@RequestBody BillForm billForm ,Model model){
 47         public String requestBody52(Model model){
 48         System.out.println("进入test52");                    // 52 测试接收对象+List 失败
 49         
 50         return "ok";
 51     }
 52     
 53     // 51 尝试 c层向ajax传递List类型的对象
 54     @RequestMapping(value="/test/requestBodyTest51.action",method=RequestMethod.POST)
 55     public @ResponseBody UserTest requestBody51(@RequestBody List<UserTest> usertestList ,Model model){
 56         
 57         System.out.println(usertestList);
 58         
 59         UserTest uT = usertestList.get(0);
 60         System.out.println("List中取出第一个对象: " + uT);
 61         
 62         for(UserTest u : usertestList){
 63             System.out.println("姓名:" + u.getUserName() +"," + "密码:" + u.getPassWord());
 64         }
 65         
 66         return uT;
 67     }
 68     
 69     // 50 c层向ajax传递单个java对象,已经成功
 70     @RequestMapping(value="/test/requestBodyTest50.action",method=RequestMethod.POST)
 71     public @ResponseBody UserTest requestBody50(@RequestBody List<UserTest> usertestList ,Model model){
 72         
 73         System.out.println(usertestList);
 74         
 75         UserTest uT = usertestList.get(0);
 76         System.out.println("List中取出第一个对象: " + uT);
 77         
 78         for(UserTest u : usertestList){
 79             System.out.println("姓名:" + u.getUserName() +"," + "密码:" + u.getPassWord());
 80         }
 81         
 82         return uT;
 83     }
 84     
 85     // 49 传递List的json数据  给c层
 86     @ResponseBody
 87     @RequestMapping(value="/test/requestBodyTest49.action",method=RequestMethod.POST)
 88     public String requestBody49(@RequestBody List<UserTest> usertestList ,Model model){
 89         
 90         System.out.println(usertestList);
 91         
 92 //        UserTest uT = usertestList.get(0);
 93 //        System.out.println("List中取出第一个对象: " + uT);
 94         
 95         for(UserTest u : usertestList){
 96             System.out.println("姓名:" + u.getUserName() +"," + "密码:" + u.getPassWord());
 97         }
 98         
 99         return "ok";
100     }
101     
102     @RequestMapping(value="/test/requestBodyTest48.action")        // 48@RequestBody,未收到值
103     public @ResponseBody 
104     UserTest requestBody48(@RequestBody UserTest usertest,Model model){
105 //    UserTest requestBody48(String userNmae,String passWord){    // 普通的方式可以传递
106         System.out.println("进入@RequestBody测试的方法中");
107         System.out.println(usertest);
108         
109         return usertest;                    
110     }
111     
112     @RequestMapping(value="/test/requestParam.html")            // 47@RequestParam
113     public String getRequestParam(@RequestParam("name") String name){        
114         System.out.println("name值为: " + name);                    // 前端须有对应的名称
115         return "testJSP";
116     }
117     
118     @RequestMapping(value="/test/params/{id}")            // 46@PathVariable
119     public String getParams(@PathVariable int id){        // 如果接收的参数和形参一致,直接注解即可
120         System.out.println("id值为: " + id);
121         return "testJSP";
122     }
123     
124     /*@RequestMapping(value="/test/params/{id}")            // 46@PathVariable
125     public String getParams(@PathVariable("id") int idValue){    // 如果id和idValue不一致,需别名
126         System.out.println("id值为: " + idValue);
127         return "testJSP";
128     }*/
129     
130     @RequestMapping(value="/test/into")            // 43 自动注入
131     public String intoTest(){                    // 进入测试用的jsp页面
132         return "testJSP";
133     }
134     
135     @RequestMapping(value={"/test/session","/test/getSession"})
136     public String getSession(){                    // 在测试ye中,点链接,在控制台获得session中的值
137         HttpSession httpSession = request.getSession();
138         System.out.println("deckInfo值为: " + httpSession.getAttribute("deckInfo"));
139         System.out.println(httpSession);
140         
141         return"testJSP";
142     }
143     
144 }
TestController
复制代码

 

Service层

复制代码
 1 package shanhai.service;
 2 
 3 import java.util.List;
 4 
 5 import shanhai.pojo.Card;
 6 import shanhai.pojo.Logininfo;
 7 import shanhai.pojo.QueryVo;
 8 import shanhai.pojo.User;
 9 import utils.Page;
10 
11 public interface CardService {
12     public List<Card> selectList();                            // 查询所有
13     public void addCard(Card card);                            // 添加数据
14     public Card showFormCard(int id);                        // id查询
15     public void updateSubmit(Card card);                    // 修改数据
16     public void deleteAjax(Integer id);                        // 删除数据
17     public Page<Card> selectPageByQueryVo(QueryVo vo);        // 分页按钮跳转
18     public boolean userLogin(User user);                    // 用户登录
19     public void userRegister(User user);                    // 注册用户
20     public boolean ajaxUserName(String username);            // 校验用户名是否可以注册
21     public User myProfileName(User user);                    // 我的资料 显示名称(非用户名)
22     
23     // 通过用户名修改名称   这里不受后续选择的方式1还是方式2的影响,返回只要一个结果
24     public void updateMyProfile(String loginUserName, String myProfileName,
25             String my,String userInfo);
26     
27     // 需要更新后的用户,用于显示
28     public User updateShow(String loginUserName, String myProfileName,
29             String my,String userInfo);
30     
31     // 修改用户密码  使用了事务
32     public boolean updatePassword(String usernameUpdatePassword,String password1, 
33             String password2, String updatePassword);
34 
35     public String logintime(User user);                        // 上次登录时间
36     
37     public String getUsername(String loginUser);            // 据用户名从db中查询用户信息
38     
39     public void sQ(Logininfo logininfo);                    // 8 密保问题
40     
41     public boolean forGetPassword(Logininfo logininfo);        // 9 忘记密码
42     
43     // 9 密保问题验证,设密码
44     public void sQUpdatePassword(String sQusername, String sQupdatePassword);
45     
46     // 12 历史登录次数
47     public int loginNumber(User user);    
48     
49 }
CardService
复制代码
复制代码
  1 package shanhai.service;
  2 
  3 import java.util.Date;
  4 import java.util.List;
  5 import java.util.UUID;
  6 
  7 import org.springframework.beans.factory.annotation.Autowired;
  8 import org.springframework.stereotype.Service;
  9 import org.springframework.transaction.annotation.Transactional;
 10 
 11 import shanhai.mapper.CardDao;
 12 import shanhai.pojo.Card;
 13 import shanhai.pojo.Logininfo;
 14 import shanhai.pojo.QueryVo;
 15 import shanhai.pojo.User;
 16 import utils.Page;
 17 
 18 @Service
 19 public class CardServiceImpl implements CardService {
 20     @Autowired
 21     private CardDao d;                            
 22     
 23     public List<Card> selectList() {                // 查询所有
 24         return d.selectList();
 25     }
 26     
 27     public void addCard(Card card) {                // 添加数据
 28         d.addCard(card);    
 29     }
 30     
 31     public Card showFormCard(int id) {                // id查询
 32         return d.showFormCard(id);
 33     }
 34 
 35     public void updateSubmit(Card card) {            // 修改数据
 36         d.updateSubmit(card);
 37     }
 38     
 39     public void deleteAjax(Integer id) {            // 删除数据
 40         d.deleteAjax(id);
 41     }
 42 
 43     public Page<Card> selectPageByQueryVo(QueryVo vo) {                   // 分页按钮跳,未条件查询
 44         Page<Card> page = new Page<Card>();
 45         page.setSize(5);    // 每页数
 46         vo.setSize(5);        
 47         if (null != vo) {
 48             if (null != vo.getPage()) {                                // 判断当前页 不能为空
 49                 page.setPage(vo.getPage());
 50                 vo.setStartRow((vo.getPage() -1)*vo.getSize());        // 算结果
 51             }
 52                 
 53             if(null != vo.getName() && !"".equals(vo.getName().trim())){
 54                 vo.setName(vo.getName().trim());
 55             }
 56             
 57             if(null != vo.getRace() && !"".equals(vo.getRace().trim())){    // 下拉列表的值
 58                 vo.setRace(vo.getRace().trim());
 59             }
 60             if(null != vo.getRace() && !"".equals(vo.getRace().trim())){
 61                 vo.setRace(vo.getRace().trim());
 62             }
 63             
 64             if(null != vo.getAtk1() && !"".equals(vo.getAtk1())){            // 无法去除空格
 65                 vo.setAtk1(vo.getAtk1());
 66             }
 67             if(null != vo.getAtk2() && !"".equals(vo.getAtk2())){
 68                 vo.setAtk2(vo.getAtk2());
 69             }
 70             
 71             page.setTotal(d.page2QuerytotalCount(vo));
 72             page.setRows(d.pageQuery2(vo));
 73         }
 74         return page;
 75     }
 76 
 77     public boolean userLogin(User user) {                // 用户登录
 78         User queryUser = d.userLogin(user);             // 登录信息和数据表中存储的数据对比
 79         
 80         if(queryUser!=null) {                            // 判断用户登录是否成功,
 81             return true;                                // 返回值给controller
 82         }else{                                            // 如果登录信息错误,就会返回null
 83             return false;                                // 因为用户信息和数据库存储的数据不一致
 84         }
 85         
 86     }
 87 
 88     public void userRegister(User user) {                // 用户注册
 89         user.setUid(UUID.randomUUID().toString());        // user表使用的随机生成的字符串
 90         user.setState(0);
 91         user.setCode("0");
 92         
 93         // 省市联动  目前只能接收省的值为数字,在这里转换成str        河北,四川,广东,江西
 94         switch(user.getProvinces()) {
 95             case "0" :
 96                user.setProvinces("河北省");
 97                break;
 98             case "1" :
 99                user.setProvinces("四川省");
100                break;
101             case "2" :
102                user.setProvinces("广东省");
103                break;
104             case "3" :
105                user.setProvinces("江西省");
106                break;       
107         }
108         
109         d.userRegister(user);        // 设置后的省的值为user.getProvinces()
110         
111     }
112 
113     public boolean ajaxUserName(String username) {        // 校验用户名是否可以注册
114         User u = d.ajaxUserName(username);
115         
116         if(u == null) {    
117             return false;
118         }else {
119             return true;
120         }
121         
122     }
123 
124     public User myProfileName(User user) {                // 我的资料 显示名称(非用户名)
125         return d.myProfileName(user);
126     }
127 
128     // 通过用户名修改名称 方式1  应该有能接收多参数传入的方式,先用之前的方式,后续改用@param注解
129     /* public void updateMyProfile(String loginUserName, String myProfileName) {
130         // 将获得的参数设置成一个对象,
131         User u= new User();
132         u.setUsername(loginUserName);
133         u.setName(myProfileName);
134         d.updateMyProfile(u);
135     }*/
136     
137     // 新增修改个性签名的参数
138     // 通过用户名修改名称 方式2,尝试使用@param注解来传递多个参数值
139     public void updateMyProfile(String loginUserName, String myProfileName,
140             String my,String userInfo) {
141         d.updateMyProfile(loginUserName,myProfileName,my,userInfo);
142     }
143     
144     // 需要更新后的用户对象,用于显示 方式1  准备传入一个user类
145     /*public User updateShow(String loginUserName, String myProfileName) {
146         // 将获得的参数设置成一个对象,
147         User updateShow = new User();
148         updateShow.setUsername(loginUserName);
149         updateShow.setName(myProfileName);
150         return d.updateShow(updateShow);
151     }*/
152     
153     // 需要更新后的用户对象,用于显示 方式2 使用@param注解来传递多个参数值
154     public User updateShow(String loginUserName, String myProfileName,
155             String my,String userInfo) {
156         return d.updateShow(loginUserName,myProfileName,my,userInfo);
157     }
158 
159     // 修改用户密码  使用事务
160     @Transactional
161     public boolean updatePassword(String usernameUpdatePassword, String password1, 
162             String password2, String updatePassword) {
163         String username = usernameUpdatePassword;            // 据当前用户名修改密码
164         
165         User user1 = d.queryPassword1(username,password1);    // 旧用户的uid
166         User user2 = d.queryPassword2(username,password2);
167         
168         d.updatePassword(username,updatePassword);
169         
170         // 这里不能使用|| ||代表任意一个条件为真,判断结果就是真,不满足需求
171         if(user1 != null && user2 !=null ) {    // 如果查询和更新都成功,返回true,表示成功
172             return true;
173         } else {                                // 否则,抛出异常,回滚事务,表示失败
174             throw new RuntimeException();
175         }
176         
177     } // 修改用户密码的方法的结束括号
178 
179     
180     public String logintime(User user) {                            // 2 上次登录时间
181         String s = null ;                                            // 准备返回的值
182         
183         String usernameLogintime = user.getUsername();                // 获取当前用户名
184         
185         // 将if-else改为根据当前用户名查询到的数值,再判断是否为null 
186         // 改在else中查询,预期是只执行一次即可
187         
188         // 从db中获取上次时间  后由string改为类Logininfo    作用if-else判断用
189         // 预期效果为: 此用户是第一次登录时,返回null  不是时,返回一个对象,包含用户名和时间
190         Logininfo selectTime = d.selectLogintime(usernameLogintime);    
191         
192         if(selectTime!= null) {                                        // db有值,代表非第一次登录
193             Date Date = new Date();
194             d.firstLoginTime(usernameLogintime,Date);                // 在db中设置当前时间
195             selectTime = d.selectLogintime(usernameLogintime);        // 再次获取时间
196             s = selectTime.getLogintime();
197         } else {                                                    // 无,代表第一次 
198             s = "当前用户是第一次登录,下次登录时则会显示具体时间";
199             
200             // 在这里将用户名存入db中,因为else只会执行一次,也就是时间为null时,所以不用考虑其它
201             d.setLogininfoUsername(usernameLogintime);
202         }
203         return s;
204     }    // 上次登录时间的结束括号
205 
206     public String getUsername(String loginUser) {        // 据用户名从db中查询用户信息
207         return d.getUsername(loginUser);
208     }
209 
210     public void sQ(Logininfo logininfo) {                            // 8 密保问题  未使用事务
211         
212         String Username = logininfo.getUsername();        // 密保问题中,当前的用户名
213         
214         String securityQuestion1 = logininfo.getSecurityQuestion1();    // 设置密保问题1
215         d.setSQ1(Username,securityQuestion1);                             
216         
217         Logininfo q1 = d.querySQ1(Username,securityQuestion1);            // 从db查询密保问题1
218         String q1str = q1.getSecurityQuestion1();
219         
220         String securityQuestion2 = logininfo.getSecurityQuestion2();    // 设置密保问题2
221         d.setSQ2(Username,securityQuestion2);                         
222         
223         Logininfo q2 = d.querySQ2(Username,securityQuestion2);            // 从db查询密保问题2
224         String q2str = q2.getSecurityQuestion2();
225         
226         
227         String securityQuestion3 = logininfo.getSecurityQuestion3();    // 设置密保问题3
228         d.setSQ3(Username,securityQuestion3);
229         
230         Logininfo q3 = d.querySQ3(Username,securityQuestion3);            // 从db查询密保问题3
231         String q3str = q3.getSecurityQuestion3();
232     }
233 
234     @Transactional 
235     public boolean forGetPassword(Logininfo logininfo) {                // 9 忘记密码 要使用事务
236         String Username = logininfo.getUsername();
237         
238         String securityQuestion1 = logininfo.getSecurityQuestion1();    // form接收到的问题1
239         Logininfo q1 = d.querySQ1(Username,securityQuestion1);            // 从db查询到的问题1
240         String dbsQ1 = q1.getSecurityQuestion1();
241         
242         String securityQuestion2 = logininfo.getSecurityQuestion2();    // form接收到的问题2
243         Logininfo q2 = d.querySQ2(Username,securityQuestion2);            // 从db查询到的问题2
244         String dbsQ2 = q2.getSecurityQuestion2();
245         
246         String securityQuestion3 = logininfo.getSecurityQuestion3();    // form接收到的问题3
247         Logininfo q3 = d.querySQ3(Username,securityQuestion3);            // 从db查询到的问题3
248         String dbsQ3 = q3.getSecurityQuestion3();
249         
250         // 当form接收到的问题的答案 和 db中用户名+问题查询的结果  共3次,额外有3次接收值不为空的判断
251         // 不能判断不为空,因为刚一进入的页面时,必须是空的
252         // securityQuestion1 != null && securityQuestion2 != null  && securityQuestion1 != null
253         if(securityQuestion1.equals(dbsQ1) && securityQuestion2.equals(dbsQ2) &&
254                 securityQuestion3.equals(dbsQ3)) {    
255             return true;
256         } else {                                // 否则,抛出异常,回滚事务,表示失败
257             throw new RuntimeException();
258         }
259         
260     }
261 
262     // 9 密保问题验证,设密码
263     public void sQUpdatePassword(String sQusername, String sQupdatePassword) {
264         d.sQUpdatePassword(sQusername,sQupdatePassword);
265     }
266 
267     // 12 历史登录次数 
268     public int loginNumber(User user) {
269         String username = user.getUsername();                         // 当前用户名
270         
271         Logininfo logininfo = d.loginNumber(username);                // 查询登录次数 
272         int loginSuccessNumber = logininfo.getLoginNumber();
273         
274         loginSuccessNumber++;     // 本次登录成功,则往logininfo中loginNumber的值+1
275         
276         d.setLoginNumber(username,loginSuccessNumber);                // +1后存入db
277         
278         return loginSuccessNumber;
279     }
280     
281 } // CardServiceImpl的结束括号
CardServiceImpl
复制代码

 

复制代码
 1 package shanhai.service;
 2 
 3 import java.sql.Date;
 4 import java.util.List;
 5 
 6 import shanhai.pojo.Books;
 7 import shanhai.pojo.Card;
 8 import shanhai.pojo.magic_trapCard;
 9 
10 public interface DeckService {
11     List<Card> deckId(Integer deckId);                            // 13 选择卡组
12     List<Card> selectDeck(String deckOne, String deckTwo);        // 17 卡组联动,选择具体的卡组
13     String deckInfo(String deckOne, String deckTwo);            // 19 卡组信息
14 
15     // 22 魔陷卡组列表
16     List<magic_trapCard> magic_trapOption(String magic_trapOne, String magic_trapTwo);
17     List<Books> BookList();                                        // 23 书架列表查询
18     public void addBook(Books books);                            // 24 添加书籍
19     Books showFormBook(int id);                                // 25 模态框显示书籍信息,查询
20     void updateSubmitBook(Books books);                        // 25 书籍修改 模态框提交的修改的值
21     void deleteBook(Integer id);                            // 26 删除书籍
22     void deletesBook(Integer[] ids);                        // 27 批量删除书籍
23     void addMagic_trap(magic_trapCard mt);                    // 31 添加魔陷
24     
25     // 32 魔陷  模态框显示魔陷卡信息,查询
26     magic_trapCard showFormMagicTrap(Integer magicTrapId,String cardType);
27     // 33魔陷修改 模态框提交的修改的值    
28     void updateSubmitMagicTrap(magic_trapCard mt);
29     void deleteMagicTrap(Integer magicTrapId, String cardType);        // 34 单次删除
30     void deletesMagicTrap(Integer[] ids, String str);                // 35 批量删除
31     
32     // 36 为了显示出操作后的页面效果,所以在这里利用str查询db
33     List<magic_trapCard> magic_trapOptionStr(String str);
34     // 38 书籍据时间段查询
35     List<Books> ReadingDateQuery(Date startDateQuery, Date endDateQuery);
36     // 38 查询当前月份的书籍
37     List<Books> ReadingDateQuery136(Integer query136);
38 
39 }
DeckService
复制代码
复制代码
  1 package shanhai.service;
  2 
  3 import java.sql.Date;
  4 import java.util.List;
  5 
  6 import org.springframework.beans.factory.annotation.Autowired;
  7 import org.springframework.stereotype.Service;
  8 
  9 import shanhai.mapper.DeckDao;
 10 import shanhai.pojo.Books;
 11 import shanhai.pojo.Card;
 12 import shanhai.pojo.magic_trapCard;
 13 
 14 @Service
 15 public class DeckServiceImpl implements DeckService{
 16     @Autowired
 17     private DeckDao d;
 18 
 19     public String deckInfo(String deckOne, String deckTwo) {        // 19 卡组信息
 20         String selectDeckInfo = null ;            // 准备根据列表传递过来的值,来从db查询卡组信息
 21         
 22         // 0:黑魔术师  0:黑魔导少女   1:自然竹笋 1:自然木鳞龙   不同于查询卡组内容,这是查询卡组信息
 23         if("0".equals(deckOne)){
 24             
 25             switch(deckTwo) {
 26                 case "黑魔术师" :
 27                     selectDeckInfo = d.selectDeckInfo2();            // 黑魔术师卡组
 28                     break;
 29                 case "黑魔导少女" :
 30                     selectDeckInfo = d.selectDeckInfo3();            // 黑魔导少女卡组
 31                     break;    
 32             }
 33         }
 34         
 35         if("1".equals(deckOne)) {
 36             switch(deckTwo) {
 37                 case "自然竹笋" :
 38                     selectDeckInfo = d.selectDeckInfo4();            // 自然竹笋卡组
 39                     break;
 40                 case "自然木鳞龙" :
 41                     selectDeckInfo = d.selectDeckInfo5();             // 自然木鳞龙卡组
 42                     break;
 43                 case "自然木龙兽" :
 44                     selectDeckInfo = d.selectDeckInfo6();            // 自然木龙兽
 45             }
 46         }
 47         
 48         return selectDeckInfo;
 49     }
 50     
 51     
 52     public List<Card> selectDeck(String deckOne, String deckTwo) {    // 17 卡组联动,选择具体的卡组
 53         List<Card> deckIdList = null ;            // 准备根据列表传递过来的值,来选择从db中查询 
 54         
 55         // 0:黑魔术师  0:黑魔导少女   1:自然竹笋 1:自然木鳞龙
 56         if("0".equals(deckOne)){
 57             switch(deckTwo) {
 58                 case "黑魔术师" :
 59                     deckIdList = d.deckId2();            // 黑魔术师卡组
 60                     break;
 61                 case "黑魔导少女" :
 62                     deckIdList = d.deckId3();            // 黑魔导少女卡组
 63                     break;
 64             }
 65         }
 66         
 67         if("1".equals(deckOne)) {
 68             switch(deckTwo) {
 69                 case "自然竹笋" :
 70                     deckIdList = d.deckId4();            // 自然竹笋卡组
 71                     break;
 72                 case "自然木鳞龙" :
 73                     deckIdList = d.deckId5();             // 自然木鳞龙卡组
 74                     break;    
 75                 case "自然木龙兽" :
 76                     deckIdList = d.deckId6();            // 自然木龙兽
 77             }
 78         }
 79         
 80         return deckIdList;
 81     }
 82     
 83 
 84     public List<Card> deckId(Integer deckId) {                    // 13 选择卡组
 85         // 目前有3种情况1,null 2是数值为1(代表自然竹笋卡组),3是数值为2(代表黑魔导少女卡组)
 86         if(deckId == null) {
 87             deckId = 0; 
 88         }
 89         
 90         List<Card> deckIdList = null ;            // 准备根据列表传递过来的值,来选择从db中查询 
 91         
 92         switch(deckId) {
 93             case 0 :
 94                 // 无卡组
 95                 break;
 96             case 1 :
 97                 deckIdList = d.deckId2();        // 从db中查询deck2  自然竹笋
 98                 break;
 99             case 2  :
100                 deckIdList = d.deckId3();        // 从db中查询deck3
101                 break;
102         }
103         
104         /*if(deckIdList == null ) {
105             deckIdList.add(new Card(1,"0","0","0",0,0));
106         }*/
107         
108         return deckIdList;
109     }
110 
111     // 22 魔陷卡组列表
112     public List<magic_trapCard> magic_trapOption(String magic_trapOne, String magic_trapTwo) {
113         List<magic_trapCard> magic_trapList = null ;            
114         
115         if("0".equals(magic_trapOne)){
116             switch(magic_trapTwo) {
117                 case "场地魔法卡" :
118                     magic_trapList = d.magic1();            
119                     break;
120                 case "普通魔法卡" :
121                     magic_trapList = d.magic2();            
122                     break;    
123             }
124         }
125         
126         if("1".equals(magic_trapOne)) {
127             switch(magic_trapTwo) {
128                 case "普通陷阱卡" :
129                     magic_trapList = d.trap1();    
130                     break;
131                 case "反击陷阱卡" :
132                     magic_trapList = d.trap2();    
133                     break;    
134             }
135         }
136         
137         return magic_trapList;
138     }
139 
140     public List<Books> BookList() {                    // 23 书架列表查询
141         List<Books> ListBook = d.BookList();
142         
143         return ListBook;
144     }
145 
146     public void addBook(Books books) {                    // 24 添加书籍
147         d.addBook(books);
148     }
149 
150     public Books showFormBook(int id) {                    // 25 模态框显示书籍信息,查询
151         // 在些尝试一下能否从db中查询出timestamp类型的数据
152         
153         
154         
155         return d.showFormBook(id);
156     }
157 
158     public void updateSubmitBook(Books books) {            // 25 书籍修改 模态框提交的修改的值
159         d.updateSubmitBook(books);
160     }
161 
162     public void deleteBook(Integer id) {                // 26 删除书籍
163         d.deleteBook(id);
164     }
165 
166     
167     public void deletesBook(Integer[] ids) {            // 27 批量删除书籍
168         d.deletesBook(ids);
169     }
170 
171 
172     public void addMagic_trap(magic_trapCard mt) {        // 31 添加魔陷
173         String s = mt.getCardType();        //  据cardType类型,选择不同的数据表,然后再添加
174         switch(s){
175             case "场地魔法卡":
176                 d.addMagic_card1(mt);        // 添加到magic_card1
177                 break;
178             case "普通魔法卡":
179                 d.addMagic_card2(mt);        // 添加到magic_card2
180                 break;
181             case "普通陷阱卡":
182                 d.addTrap_card1(mt);        // 添加到trap_card1
183                 break;
184             case "反击陷阱卡":
185                 d.addTrap_card2(mt);        // 添加到trap_card2
186                 break;    
187         }
188         
189     }
190 
191     // 32 魔陷  模态框显示魔陷卡信息,查询
192     public magic_trapCard showFormMagicTrap(Integer magicTrapId,String cardType) {
193         //  据cardType类型,选择不同的数据表,然后再查询
194         magic_trapCard magic_trapCard = null;
195         
196         switch(cardType){
197             case "场地魔法卡":
198                 magic_trapCard = d.showFormMagic1(magicTrapId);        // 查询魔陷中的魔法卡列表1
199                 break;
200             case "普通魔法卡":
201                 magic_trapCard = d.showFormMagic2(magicTrapId);        // 查询魔陷中的魔法卡列表2
202                 break;
203             case "普通陷阱卡":
204                 magic_trapCard = d.showFormTrap1(magicTrapId);        // 查询魔陷中的陷阱卡列表1
205                 break;
206             case "反击陷阱卡":
207                 magic_trapCard = d.showFormTrap2(magicTrapId);        // 查询魔陷中的陷阱卡列表2
208                 break;    
209         }
210         
211         return magic_trapCard;
212     }
213 
214     // 33魔陷修改 模态框提交的修改的值    
215     public void updateSubmitMagicTrap(magic_trapCard mt) {
216         String s = mt.getCardType();        // 据魔陷卡的卡片类型来判断修改到哪个表中
217         
218         switch(s) {
219             case "场地魔法卡" :
220                 d.updateSubmitMagic1(mt);
221                 break;
222             case "普通魔法卡" :
223                 d.updateSubmitMagic2(mt);
224                 break;
225             case "普通陷阱卡" :
226                 d.updateSubmitTrap1(mt);
227                 break;
228             case "反击陷阱卡" :
229                 d.updateSubmitTrap2(mt);
230                 break;
231         }
232         
233     }
234 
235     public void deleteMagicTrap(Integer magicTrapId, String cardType) {        // 34 单次删除
236             switch(cardType){                //  据cardType类型,选择不同的数据表,然后再删除
237                 case "场地魔法卡":
238                     d.deleteMagic1(magicTrapId);        // 查询魔陷中的魔法卡列表1
239                     break;
240                 case "普通魔法卡":
241                     d.deleteMagic2(magicTrapId);        // 查询魔陷中的魔法卡列表2
242                     break;
243                 case "普通陷阱卡":
244                     d.deleteTrap1(magicTrapId);            // 查询魔陷中的陷阱卡列表1
245                     break;
246                 case "反击陷阱卡":
247                     d.deleteTrap2(magicTrapId);            // 查询魔陷中的陷阱卡列表2
248                     break;    
249             }
250     }
251 
252     public void deletesMagicTrap(Integer[] ids, String str) {        // 35 批量删除
253         switch(str){                //  据前端隐藏input传递的str,选择不同的数据表,然后再删除
254             case "场地魔法卡":
255                 d.deletesMagic1(ids);            // 批量删除魔陷卡列表中的魔法卡列表1
256                 break;
257             case "普通魔法卡":
258                 d.deletesMagic2(ids);            
259                 break;
260             case "普通陷阱卡":
261                 d.deletesTrap1(ids);            
262                 break;
263             case "反击陷阱卡":
264                 d.deletesTrap2(ids);            
265                 break;    
266         }
267     }
268 
269     // 36 为了显示出操作后的页面效果,所以在这里利用str查询db
270     public List<magic_trapCard> magic_trapOptionStr(String str) {
271         List<magic_trapCard> mtList = null;
272         
273         switch(str) {
274             case "场地魔法卡":
275                 mtList = d.selectMagic1();            
276                 break;
277             case "普通魔法卡":
278                 mtList = d.selectMagic2();            
279                 break;
280             case "普通陷阱卡":
281                 mtList = d.selectTrap1();            
282                 break;
283             case "反击陷阱卡":
284                 mtList = d.selectTrap2();            
285                 break;    
286         }
287         
288         return mtList;
289     }
290 
291     // 38 书籍据时间段查询
292     public List<Books> ReadingDateQuery(Date startDateQuery, Date endDateQuery) {
293         return d.ReadingDateQuery(startDateQuery,endDateQuery);
294     }
295 
296     // 38 查询当前月份的书籍 
297     public List<Books> ReadingDateQuery136(Integer Query136) {
298         List<Books> bookList = null;
299         
300         switch(Query136){
301             case 1:
302                 bookList = d.ReadingDateQuery1();
303                 break;
304             case 3:
305                 bookList = d.ReadingDateQuery3();
306                 break;
307             case 6:
308                 bookList = d.ReadingDateQuery6();
309                 break;
310         }
311         
312         return bookList;
313     }
314     
315 }    // DeckServiceImpl类的结束括号
DeckServiceImpl
复制代码

 

复制代码
 1 package shanhai.service;
 2 
 3 import java.util.List;
 4 import shanhai.pojo.Picture;
 5 
 6 public interface PictureService {
 7 
 8     public void addPicName(String picName);            // 在数据表中保存图片的名称
 9 
10     public List<Picture> queryAll();                // 查询图片列表 
11 
12 }
PictureService
复制代码
复制代码
 1 package shanhai.service;
 2 
 3 import java.util.List;
 4 
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.stereotype.Service;
 7 
 8 import shanhai.mapper.PictureDao;
 9 import shanhai.pojo.Picture;
10 
11 @Service
12 public class PictureServiceImpl  implements PictureService  {
13 
14     @Autowired
15     private PictureDao pD;
16 
17     public void addPicName(String picName) {        // 在数据表中保存图片的名称
18         pD.addPicName(picName);
19     }
20 
21     public List<Picture> queryAll() {
22         return pD.queryAll();
23     }
24     
25 }
PictureServiceImpl
复制代码

 

Dao层

复制代码
  1 package shanhai.mapper;
  2 
  3 import java.util.Date;
  4 import java.util.List;
  5 
  6 import org.apache.ibatis.annotations.Param;
  7 
  8 import shanhai.pojo.Card;
  9 import shanhai.pojo.Logininfo;
 10 import shanhai.pojo.QueryVo;
 11 import shanhai.pojo.User;
 12 
 13 public interface CardDao {
 14     public List<Card> selectList();                        // 查询所有
 15     public void addCard(Card card);                        // 添加数据
 16     public Card showFormCard(int id);                    // id查询
 17     public void updateSubmit(Card card);                // 修改数据
 18     public void deleteAjax(int id);                        // 删除数据
 19     public Integer page2QuerytotalCount(QueryVo vo);    // 根据条件,查询总条数
 20     public List<Card> pageQuery2(QueryVo vo);            // 根据条件,返回分页的结果
 21     public User userLogin(User user);                    // 用户登录
 22     public void userRegister(User user);                // 用户注册
 23     public User ajaxUserName(String username);            // 校验用户名是否可以注册
 24     public User myProfileName(User user);                // 我的资料 显示名称(非用户名)
 25     //    public void updateMyProfile(User u);             // 通过用户名修改名称 第一种方式 
 26     public void updateMyProfile(                        // 通过用户名修改名称 方式2  新增my
 27             @Param("username") String loginUserName, 
 28             @Param("name") String myProfileName,
 29             @Param("my") String my,
 30             @Param("userInfo") String userInfo);
 31     
 32     //    public User updateShow(User updateShow);        // 需要更新后的用户对象,用于显示 方式1
 33     public User updateShow(                                  // 需要更新后的user来显示  方式2  新增my
 34             @Param("username") String loginUserName, 
 35             @Param("name") String myProfileName,
 36             @Param("my") String my,
 37             @Param("userInfo") String userInfo);
 38     
 39     public User queryPassword1(                                // 第一次查询密码
 40             @Param("username") String username, 
 41             @Param("password") String password1);    
 42     
 43     public User queryPassword2(                                // 第二次查询密码
 44             @Param("username") String username, 
 45             @Param("password") String password2);
 46     
 47     public void updatePassword(                                // 更新密码
 48             @Param("username") String username,
 49             @Param("password") String updatePassword);
 50     
 51     // 第一次登录时,记录当前时间  后续传入用户名   后改为每次登录时都设置
 52     public void firstLoginTime(
 53             @Param("username") String usernameLogintime,
 54             @Param("logintime") Date Date);
 55     
 56     public Logininfo selectLogintime(                        // 从db中查询上次登录的时间
 57             @Param("username") String usernameLogintime);
 58     
 59     // 利用if-elst设置一次,将用户名保存到logininfo中
 60     public void setLogininfoUsername(
 61             @Param("username") String usernameLogintime);
 62     
 63     // 据用户名从db中查询用户信息
 64     public String getUsername(
 65             @Param("username") String loginUser);
 66     
 67     // 8 密保问题 设置密保问题1
 68     public String setSQ1(
 69             @Param("username") String Username,
 70             @Param("securityQuestion1") String securityQuestion1);
 71     
 72     // 从db中查询密保问题1的结果
 73     public Logininfo querySQ1(
 74             @Param("username") String Username,
 75             @Param("securityQuestion1") String securityQuestion1);
 76     
 77     
 78     // 设置密保问题2 
 79     public void setSQ2(
 80             @Param("username") String Username,
 81             @Param("securityQuestion2") String securityQuestion2);
 82     
 83     // 从db中查询密保问题2的结果
 84     public Logininfo querySQ2(
 85             @Param("username") String Username,
 86             @Param("securityQuestion2") String securityQuestion2);
 87     
 88     
 89     // 设置密保问题3
 90     public void setSQ3(
 91             @Param("username") String Username,
 92             @Param("securityQuestion3") String securityQuestion3);    
 93     
 94     // 从db中查询密保问题3的结果
 95     public Logininfo querySQ3(
 96             @Param("username") String Username,
 97             @Param("securityQuestion3") String securityQuestion3);
 98     
 99     // 9 密保问题验证,设密码
100     public void sQUpdatePassword(
101             @Param("username") String sQusername, 
102             @Param("password") String sQupdatePassword);
103     
104     // 12 查询登录次数
105     public Logininfo loginNumber(
106             @Param("username") String username);
107     
108     // 12 +1后存入db
109     public void setLoginNumber(
110             @Param("username") String username, 
111             @Param("loginNumber") int loginSuccessNumber);
112     
113 }
CardDao
复制代码
复制代码
  1 <?xml version="1.0" encoding="UTF-8" ?>
  2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 <mapper namespace="shanhai.mapper.CardDao">        <!-- 命名空间,包名可能会变 -->
  4     
  5     <!--  12 +1后存入db -->
  6     <update id="setLoginNumber">
  7         UPDATE logininfo
  8         <set>
  9             loginNumber = #{loginNumber} 
 10         </set>
 11         <where>
 12             username = #{username}
 13         </where>
 14         
 15     </update>    
 16     
 17     <!-- 12 历史登录次数1 查询登录次数-->
 18     <select id="loginNumber" resultType="Logininfo">
 19         SELECT * FROM logininfo 
 20         <where>
 21             <if test="username != null and username != ''">    
 22                 username = #{username}
 23             </if>
 24         </where>
 25     </select>
 26     
 27     <!-- 9 密保问题验证后,设置密码-->
 28     <update id="sQUpdatePassword">
 29         UPDATE user
 30         <set>
 31             password = #{password}
 32         </set>
 33         <where>
 34             <if test="username != null and username != ''">    
 35                 username = #{username}
 36             </if>
 37         </where>
 38     </update>        
 39     
 40     <!-- 从db中查询密保问题3的结果 -->
 41     <select id="querySQ3" resultType="Logininfo">
 42         SELECT * FROM logininfo 
 43         <where>
 44             <if test="username != null and username != ''">    
 45                 username = #{username}
 46             </if>
 47             <if test="securityQuestion3 != null and securityQuestion3 != ''">    
 48                 and securityQuestion3 = #{securityQuestion3}
 49             </if>
 50         </where>
 51     </select>
 52     
 53     <!-- 设置密保问题3 -->
 54     <select id="setSQ3">
 55         UPDATE logininfo
 56         <set>
 57             securityQuestion3 = #{securityQuestion3}
 58         </set>
 59         <where>
 60             <if test="username != null and username != ''">    
 61                 username = #{username}
 62             </if>
 63         </where>
 64     </select>
 65     
 66     
 67     <!-- 从db中查询密保问题2的结果 -->
 68     <select id="querySQ2" resultType="Logininfo">
 69         SELECT * FROM logininfo 
 70         <where>
 71             <if test="username != null and username != ''">    
 72                 username = #{username}
 73             </if>
 74             <if test="securityQuestion2 != null and securityQuestion2 != ''">    
 75                 and securityQuestion2 = #{securityQuestion2}
 76             </if>
 77         </where>
 78     </select>
 79     
 80     <!-- 设置密保问题2 -->
 81     <select id="setSQ2">
 82         UPDATE logininfo
 83         <set>
 84             securityQuestion2 = #{securityQuestion2}
 85         </set>
 86         <where>
 87             <if test="username != null and username != ''">    
 88                 username = #{username}
 89             </if>
 90         </where>
 91     </select>
 92     
 93     <!-- 从db中查询密保问题1的结果 -->
 94     <select id="querySQ1" resultType="Logininfo">
 95         SELECT * FROM logininfo 
 96         <where>
 97             <if test="username != null and username != ''">    
 98                 username = #{username}
 99             </if>
100             <if test="securityQuestion1 != null and securityQuestion1 != ''">    
101                 and securityQuestion1 = #{securityQuestion1}
102             </if>
103         </where>
104     </select>
105     
106     <!-- 8 密保问题 设置密保问题1 -->
107     <select id="setSQ1">
108         UPDATE logininfo
109         <set>
110             securityQuestion1 = #{securityQuestion1}
111         </set>
112         <where>
113             <if test="username != null and username != ''">    
114                 username = #{username}
115             </if>
116         </where>
117     </select>
118     
119     <!-- 据用户名从db中查询用户信息
120          SELECT * FROM USER WHERE username = '1';  -->
121     <select id="getUsername" resultType="String">
122         SELECT * FROM user 
123         <where>
124             <if test="username != null and username != ''">    
125                 username = #{username}
126             </if>
127         </where>    
128     </select>
129     
130     <!-- 利用if-elst设置一次,将用户名保存到logininfo中 -->
131     <!-- public void setLogininfoUsername(String usernameLogintime); -->
132     <insert id="setLogininfoUsername" parameterType="String">
133         INSERT INTO logininfo (username) VALUES (#{username});
134     </insert>
135 
136     <!-- 根据当前用户名,从db中查询上次登录的时间 -->
137     <!-- 这是,不用用户名就能直接查询时间的版本 -->
138     <!-- <select id="selectLogintime" resultType="String">
139         SELECT logintime FROM logininfo ;
140     </select> -->
141     
142     <!-- 根据当前用户名,从db中查询上次登录的时间 -->
143     <!-- 真正的根据当前用户名查询,而非上个版本的直接查询 -->
144     <!-- <select id="selectLogintime" resultType="String">
145         SELECT logininfo
146         <where>
147             <if test="username != null and uaername != ''">
148             username = #{username}
149             <if test="logintime != null and logintime != ''">
150             and logintime = #{logintime}
151         </where>
152     </select> -->
153 
154     <!-- 根据当前用户名,从db中查询上次登录的时间 -->
155     <!-- 真正的根据当前用户名查询,而非上个版本的直接查询 -->
156     <!-- 改为使用占位符,不然总是能查询到 -->
157     <select id="selectLogintime" resultType="Logininfo">
158         SELECT * FROM logininfo 
159         <where>
160             <if test="username != null and username != ''">    
161             username = #{username}
162             </if>
163         </where>
164             
165     </select>
166     
167     <!-- 第一次登录时,记录当前时间   后弃用parameterType="Date" -->
168     <insert id="firstLoginTime" >
169         UPDATE logininfo 
170         <set>
171             logintime = #{logintime}
172         </set>
173         <where>username = #{username}</where>
174     </insert>
175 
176     <!-- 更新密码 根据用户名来设置密码 -->
177     <select id="updatePassword" >
178         UPDATE user
179         <set>
180             password = #{password}
181         </set>
182         <where> username = #{username} </where>
183     </select>
184 
185     <!-- 第二次查询密码  -->
186     <select id="queryPassword2" resultType="User">
187         SELECT * FROM user 
188         <where>
189             <if test="username != null and username != ''">    
190                 username = #{username}
191             </if>
192             <if test="password != null and password != ''">    
193                 and password = #{password}
194             </if>
195         </where>    
196     </select>
197 
198     <!-- 第一次查询密码   -->
199     <select id="queryPassword1" resultType="User">
200         SELECT * FROM user 
201         <where>
202             <if test="username != null and username != ''">    
203                 username = #{username}
204             </if>
205             <if test="password != null and password != ''">    
206                 and password = #{password}
207             </if>
208         </where>    
209     </select>
210 
211     <!-- 需要更新后的用户,用于显示    方式2 使用@param注解,这里不用写传入的参数 -->
212     <select id="updateShow" resultType="User">
213         SELECT * FROM user 
214         <where>
215             <if test="username != null and username != ''">    
216                 username = #{username}
217             </if>    
218             <if test="name != null and name != ''">
219                 and name = #{name}
220             </if>    
221             <if test="my != null and my != ''">
222                 and my = #{my}
223             </if>
224             <if test="userInfo != null and userInfo != ''">
225                 and userInfo = #{userInfo}
226             </if>
227         </where>
228     </select>    
229         
230     <!-- 需要更新后的用户,用于显示    方式1 即传入一个类 具体参数类型为User -->
231     <!-- <select id="updateShow" parameterType="User" resultType="User">
232         select * from user where username = #{username} and name = #{name}
233     </select> -->
234 
235     <!-- 通过用户名修改名称    方式2 使用@param注解,这里不用写传入的参数 -->
236     <update id="updateMyProfile" >
237          UPDATE user
238          <set> name = #{name},my = #{my},userInfo = #{userInfo} </set>
239          <where> username = #{username} </where>
240     </update>
241     
242     <!-- 通过用户名修改名称    方式1 即传入一个类 具体参数类型为User -->    
243     <!-- <select id="updateMyProfile" parameterType="User" >
244          UPDATE user
245          <set>name = #{name}</set>
246          <where>username = #{username}</where>
247     </select> -->
248 
249     <!-- 我的资料 显示名称(非用户名) -->
250     <select id="myProfileName" parameterType="String" resultType="User">
251         SELECT * FROM user
252         <where> username = #{username} </where>
253     </select>
254 
255     <!-- 校验用户名是否可以注册  -->
256     <select id="ajaxUserName" parameterType="String" resultType="User">
257         SELECT * FROM user
258         <where> username = #{username} </where>
259     </select>
260 
261     <!-- 用户注册,state,code没有详细设置 -->
262     <select id="userRegister" parameterType="User" >
263         INSERT INTO user (uid,username,password,email,name,sex,provinces,provinceCity,birthday,state,code)
264         VALUES(#{uid},#{username},#{password},#{email},#{name},#{sex},#{provinces},
265         #{provinceCity},#{birthday},#{state},#{code})
266     </select>
267 
268     <!-- 用户登录 -->
269     <select id="userLogin" parameterType="User" resultType="User">
270         SELECT * FROM user
271         <where> username = #{username} and password = #{password} </where>
272     </select>
273 
274     <!-- 总条数  注意条件,目前有3个 -->
275     <select id="page2QuerytotalCount" parameterType="QueryVo" resultType="Integer">
276         SELECT COUNT(1) FROM deck
277         <where>
278             <if test="name != null and name != ''">
279                 name like "%"#{name}"%"
280             </if>
281             <if test="race != null and race != ''">
282                 AND race = #{race}
283             </if>
284             <if test="atk1 != null and atk1 != ''">
285                 AND atk BETWEEN #{atk1} AND #{atk2}
286             </if>
287         </where>
288     </select>
289 
290     <!-- 结果集,新增查询条件race,新增范围查询的范围值2个,总条数的SQL要设置好相对应的条件 -->
291     <!-- 方法返回类型是List<Card>,但是这里的返回类型是集合中的元素的类型  -->
292     <select id="pageQuery2" parameterType="QueryVo" resultType="Card">
293         SELECT * FROM deck 
294         <where>
295             <if test="name != null and name != ''">
296                 name like "%"#{name}"%"
297             </if>
298             <if test="race != null and race != ''">
299                 AND race = #{race}
300             </if>
301             <if test="atk1 != null and atk1 != ''">
302                 AND atk BETWEEN #{atk1} AND #{atk2}
303             </if>
304             
305         </where>
306         limit #{startRow},#{size}
307     </select>
308 
309     <!-- 删除数据 -->
310     <delete id="deleteAjax" parameterType="int">
311         DELETE FROM deck
312         <where> id = #{id} </where>
313     </delete>
314 
315     <!-- 修改数据 -->
316     <update id="updateSubmit" parameterType="Card">
317         UPDATE deck 
318         <set> name=#{name},attribute=#{attribute},race=#{race},atk=#{atk},def=#{def} </set>
319         <where> id=#{id} </where>
320     </update>
321     
322     <!-- 通过id查询,并返回结果在表单中显示,有传参,有返回值 -->
323     <select id="showFormCard" parameterType="int" resultType="Card">
324         SELECT * FROM deck
325         <where> id = #{id} </where>
326     </select>
327     
328     <!-- 添加数据,无返回结果 -->
329     <select id="addCard" parameterType="Card">
330         INSERT INTO deck (id,name,attribute,race,atk,def)
331         VALUES(#{id},#{name},#{attribute},#{race},#{atk},#{def})
332     </select>
333     
334     <!-- 查询所有,未传参-->
335     <select id="selectList" resultType="Card">
336         SELECT * FROM deck
337     </select>
338     
339 </mapper>
CardDao.xml
复制代码

 

复制代码
 1 package shanhai.mapper;
 2 
 3 import java.sql.Date;
 4 import java.util.List;
 5 
 6 import org.apache.ibatis.annotations.Param;
 7 
 8 import shanhai.pojo.Books;
 9 import shanhai.pojo.Card;
10 import shanhai.pojo.magic_trapCard;
11 
12 public interface DeckDao {
13 //    public List<Card> deckId2();                // 13 选择卡组  选择从db中查询deck2表中的卡组
14     public List<Card> deckId2();                // 17 卡组联动 改为黑魔术师卡组
15 
16 //    public List<Card> deckId3();                // 13 选择卡组 从db中查询deck3
17     public List<Card> deckId3();                // 17 卡组联动 改为黑魔导少女卡组
18     
19     public List<Card> deckId4();                // 17 卡组联动 改为自然竹笋卡组
20     public List<Card> deckId5();                // 17 卡组联动 改为自然木鳞龙卡组
21 
22     public String selectDeckInfo2();            // 19 卡组信息 
23     public String selectDeckInfo3();            // 19 卡组信息
24     public String selectDeckInfo4();            // 19 卡组信息
25     public String selectDeckInfo5();            // 19 卡组信息
26 
27     public List<Card> deckId6();                // 21 新增 自然木龙兽卡组
28     public String selectDeckInfo6();            // 21 新增 自然木龙兽卡组信息
29 
30     public List<magic_trapCard> magic1();        // 22 查询 场地魔法卡
31     public List<magic_trapCard> trap1();        // 22 查询普通陷阱卡
32     public List<magic_trapCard> magic2();        // 22 查询 普通魔法卡
33     public List<magic_trapCard> trap2();        // 22 查询 反击陷阱卡
34 
35     public List<Books> BookList();                // 23 书架列表查询
36     public void addBook(Books books);            // 24 添加书籍
37     public Books showFormBook(int id);            // 25 模态框显示书籍信息,查询
38     public void updateSubmitBook(Books books);    // 25 书籍修改 模态框提交的修改的值
39 
40     public void deleteBook(Integer id);            // 26 删除书籍
41     public void deletesBook(Integer[] ids);        // 27 批量删除书籍
42 
43     public void addMagic_card1(magic_trapCard mt);        // 31 添加魔陷    添加到magic_card1
44     public void addMagic_card2(magic_trapCard mt);        // 添加到magic_card2
45     public void addTrap_card1(magic_trapCard mt);        // 添加到trap_card1
46     public void addTrap_card2(magic_trapCard mt);        // 添加到trap_card2
47 
48     // 32 魔陷  模态框显示魔陷卡信息,据ID查询,并且返回一个魔陷卡的对象
49     public magic_trapCard showFormMagic1(Integer magicTrapId);
50     public magic_trapCard showFormMagic2(Integer magicTrapId);
51     public magic_trapCard showFormTrap1(Integer magicTrapId);
52     public magic_trapCard showFormTrap2(Integer magicTrapId);
53 
54     // 33 模态框修改魔陷 提交的修改的值
55     public void updateSubmitMagic1(magic_trapCard mt);
56     public void updateSubmitMagic2(magic_trapCard mt);
57     public void updateSubmitTrap1(magic_trapCard mt);
58     public void updateSubmitTrap2(magic_trapCard mt);
59 
60     // 34 单次删除
61     public void deleteMagic1(Integer magicTrapId);
62     public void deleteMagic2(Integer magicTrapId);
63     public void deleteTrap1(Integer magicTrapId);
64     public void deleteTrap2(Integer magicTrapId);
65 
66     // 35 据前端隐藏input传递的str,选择不同的数据表,然后再删除
67     public void deletesMagic1(Integer[] ids);
68     public void deletesMagic2(Integer[] ids);
69     public void deletesTrap1(Integer[] ids);
70     public void deletesTrap2(Integer[] ids);
71 
72     // 36 为了显示出操作后的页面效果,所以在这里利用str查询db
73     public List<magic_trapCard> selectMagic1();
74     public List<magic_trapCard> selectMagic2();
75     public List<magic_trapCard> selectTrap1();
76     public List<magic_trapCard> selectTrap2();
77 
78     // 38 书籍据时间段查询
79     public List<Books> ReadingDateQuery(
80             @Param("startDateQuery") Date startDateQuery, 
81             @Param("endDateQuery") Date endDateQuery);
82 
83     // 38 查询当前月份的数据
84     public List<Books> ReadingDateQuery1();
85     public List<Books> ReadingDateQuery3();
86     public List<Books> ReadingDateQuery6();
87     
88 }
DeckDao
复制代码
复制代码
  1 <?xml version="1.0" encoding="UTF-8" ?>
  2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 <mapper namespace="shanhai.mapper.DeckDao">        <!-- 命名空间,包名可能会变 -->
  4     
  5     <select id="ReadingDateQuery6" resultType="Books">
  6         SELECT * FROM book 
  7         <where>
  8             <![CDATA[
  9             startDate >= DATE_SUB(NOW(),INTERVAL 6 MONTH) ]]>
 10         </where>
 11     </select>
 12     
 13     <select id="ReadingDateQuery3" resultType="Books">
 14         SELECT * FROM book 
 15         <where>
 16             <![CDATA[
 17             startDate >= DATE_SUB(NOW(),INTERVAL 3 MONTH) ]]>
 18         </where>
 19     </select>
 20     
 21     <!-- 39 查看当前月份的数据  其实也会查询当前这个月之后的数据,只是我们不添加即可 -->
 22     <!-- SELECT * FROM book WHERE startDate >= DATE_SUB(NOW(),INTERVAL 1 MONTH); -->
 23     <select id="ReadingDateQuery1" resultType="Books">
 24         SELECT * FROM book 
 25         <where>
 26             <![CDATA[startDate >= DATE_SUB(NOW(),INTERVAL 1 MONTH) ]]>
 27         </where>
 28     </select>
 29     
 30     <!-- 38 书籍据时间段查询
 31     public void ReadingDateQuery(
 32             @Param("startDateQuery") Date startDateQuery, 
 33             @Param("endDateQuery") Date endDateQuery); -->
 34     <select id="ReadingDateQuery" resultType="Books">
 35         SELECT * FROM book 
 36         <where>
 37             startDate BETWEEN #{startDateQuery} and #{endDateQuery}
 38         </where>
 39     </select>        
 40     
 41     <select id="selectTrap2" resultType="magic_trapCard">
 42         SELECT * FROM trap_card2
 43     </select>
 44     
 45     <select id="selectTrap1" resultType="magic_trapCard">
 46         SELECT * FROM trap_card1
 47     </select>
 48     
 49     <select id="selectMagic2" resultType="magic_trapCard">
 50         SELECT * FROM magic_card2
 51     </select>
 52     
 53     <!-- 36 为了显示出操作后的页面效果,所以在这里利用str查询db -->
 54     <select id="selectMagic1" resultType="magic_trapCard">
 55         SELECT * FROM magic_card1
 56     </select>
 57     
 58     <delete id="deletesTrap2" parameterType="java.lang.Integer">
 59           delete from trap_card2 where magicTrapId in
 60           <foreach item="ids" collection="array" index="no" open="(" separator="," close=")">
 61                 #{ids}
 62           </foreach>
 63     </delete>
 64     
 65     <delete id="deletesTrap1" parameterType="java.lang.Integer">
 66           delete from trap_card1 where magicTrapId in
 67           <foreach item="ids" collection="array" index="no" open="(" separator="," close=")">
 68                 #{ids}
 69           </foreach>
 70     </delete>
 71     
 72     <delete id="deletesMagic2" parameterType="java.lang.Integer">
 73           delete from magic_card2 where magicTrapId in
 74           <foreach item="ids" collection="array" index="no" open="(" separator="," close=")">
 75                 #{ids}
 76           </foreach>
 77     </delete>
 78     
 79     <!-- 35 批量删除 -->
 80     <delete id="deletesMagic1" parameterType="java.lang.Integer">
 81           delete from magic_card1 where magicTrapId in
 82           <foreach item="ids" collection="array" index="no" open="(" separator="," close=")">
 83                 #{ids}
 84           </foreach>
 85     </delete>
 86     
 87     <delete id="deleteTrap2" parameterType="java.lang.Integer">
 88         DELETE FROM trap_card2
 89         <where> magicTrapId=#{magicTrapId} </where>
 90     </delete>
 91     
 92     <delete id="deleteTrap1" parameterType="java.lang.Integer">
 93         DELETE FROM trap_card1
 94         <where> magicTrapId=#{magicTrapId} </where>
 95     </delete>
 96     
 97     <delete id="deleteMagic2" parameterType="java.lang.Integer">
 98         DELETE FROM magic_card2
 99         <where> magicTrapId=#{magicTrapId} </where>
100     </delete>
101     
102     <!-- 34单次删除-->
103     <delete id="deleteMagic1" parameterType="java.lang.Integer">
104         DELETE FROM magic_card1
105         <where> magicTrapId=#{magicTrapId} </where>
106     </delete>
107     
108     <update id="updateSubmitTrap2" parameterType="magic_trapCard">
109         UPDATE trap_card2
110         <set> cardName=#{cardName},cardType=#{cardType},deckMatch=#{deckMatch},
111               effect=#{effect}
112         </set>
113         <where> magicTrapId=#{magicTrapId} </where>
114     </update>
115     
116     <update id="updateSubmitTrap1" parameterType="magic_trapCard">
117         UPDATE trap_card1
118         <set> cardName=#{cardName},cardType=#{cardType},deckMatch=#{deckMatch},
119               effect=#{effect}
120         </set>
121         <where> magicTrapId=#{magicTrapId} </where>
122     </update>
123     
124     <update id="updateSubmitMagic2" parameterType="magic_trapCard">
125         UPDATE magic_card2
126         <set> cardName=#{cardName},cardType=#{cardType},deckMatch=#{deckMatch},
127               effect=#{effect}
128         </set>
129         <where> magicTrapId=#{magicTrapId} </where>
130     </update>
131     
132     <!-- 33 模态框修改魔陷 提交的修改的值 -->
133     <update id="updateSubmitMagic1" parameterType="magic_trapCard">
134         UPDATE magic_card1
135         <set> cardName=#{cardName},cardType=#{cardType},deckMatch=#{deckMatch},
136               effect=#{effect}
137         </set>
138         <where> magicTrapId=#{magicTrapId} </where>
139     </update>
140     
141     
142     <select id="showFormTrap2" parameterType="java.lang.Integer" resultType="magic_trapCard">
143         SELECT * FROM trap_card2
144         <where> magicTrapId = #{magicTrapId}</where>
145     </select>
146     
147     <select id="showFormTrap1" parameterType="java.lang.Integer" resultType="magic_trapCard">
148         SELECT * FROM trap_card1
149         <where> magicTrapId = #{magicTrapId}</where>
150     </select>
151     
152     <select id="showFormMagic2" parameterType="java.lang.Integer" resultType="magic_trapCard">
153         SELECT * FROM magic_card2
154         <where> magicTrapId = #{magicTrapId}</where>
155     </select>
156     
157     <!-- 32 魔陷  模态框显示魔陷卡信息,查询魔法卡1的列表中的ID -->
158     <select id="showFormMagic1" parameterType="java.lang.Integer" resultType="magic_trapCard">
159         SELECT * FROM magic_card1
160         <where> magicTrapId = #{magicTrapId}</where>
161     </select>
162     
163     <insert id="addTrap_card2" parameterType="magic_trapCard">
164         INSERT INTO trap_card2 (magicTrapId,cardName,cardType,deckMatch,effect)
165         VALUES(#{magicTrapId},#{cardName},#{cardType},#{deckMatch},#{effect})
166     </insert>
167     
168     <insert id="addTrap_card1" parameterType="magic_trapCard">
169         INSERT INTO trap_card1 (magicTrapId,cardName,cardType,deckMatch,effect)
170         VALUES(#{magicTrapId},#{cardName},#{cardType},#{deckMatch},#{effect})
171     </insert>
172     
173     <insert id="addMagic_card2" parameterType="magic_trapCard">
174         INSERT INTO magic_card2 (magicTrapId,cardName,cardType,deckMatch,effect)
175         VALUES(#{magicTrapId},#{cardName},#{cardType},#{deckMatch},#{effect})
176     </insert>
177     
178     <!-- 31 添加魔陷 -->
179     <insert id="addMagic_card1" parameterType="magic_trapCard">
180         INSERT INTO magic_card1 (magicTrapId,cardName,cardType,deckMatch,effect)
181         VALUES(#{magicTrapId},#{cardName},#{cardType},#{deckMatch},#{effect})
182     </insert>
183     
184     <!-- 27 批量删除书籍  public void deletesBook(Integer[] ids);        -->
185     <delete id="deletesBook" parameterType="java.lang.Integer">
186           delete from book where id in
187           <foreach item="ids" collection="array" index="no" open="(" separator="," close=")">
188                 #{ids}
189           </foreach>
190     </delete>
191     
192     <!-- 26 删除书籍 -->
193     <delete id="deleteBook" parameterType="int">
194         DELETE FROM book
195         <where> id = #{id} </where>
196     </delete>
197     
198     <!-- 25 修改书籍-->
199     <update id="updateSubmitBook" parameterType="Books">
200         UPDATE book 
201         <set> bookTitle=#{bookTitle},progress=#{progress},unreadChapters=#{unreadChapters},
202         subject=#{subject},note=#{note},demo=#{demo},bookUse=#{bookUse},format=#{format},
203         startDate=#{startDate},endDate=#{endDate}</set>
204         <where> id=#{id} </where>
205     </update>
206     
207     <!-- 25 模态框显示书籍信息,查询 -->
208     <select id="showFormBook" parameterType="int" resultType="Books">
209         SELECT * FROM book
210         <where> id = #{id}</where>
211     </select>
212     
213     <!-- 24 添加书籍 public void addBook(Books books); -->
214     <!-- 添加数据,无返回结果 -->
215     <select id="addBook" parameterType="Books">
216         INSERT INTO book (bookTitle,progress,unreadChapters,subject,note,demo,bookUse,format,
217         startDate,endDate)
218         VALUES(#{bookTitle},#{progress},#{unreadChapters},#{subject},#{note},#{demo},
219         #{bookUse},#{format},#{startDate},#{endDate})
220     </select>
221     
222     <!-- 23 书架列表查询 -->
223     <select id="BookList" resultType="Books">
224         SELECT * FROM book
225     </select>
226     
227     <!-- 22 查询 反击陷阱卡 -->
228     <select id="trap2" resultType="magic_trapCard">
229         SELECT * FROM trap_card2
230     </select>
231     
232     <!-- 22 查询 普通魔法卡 -->
233     <select id="magic2" resultType="magic_trapCard">
234         SELECT * FROM magic_card2
235     </select>
236     
237     <!-- 22 查询 普通陷阱卡 -->
238     <select id="trap1" resultType="magic_trapCard">
239         SELECT * FROM trap_card1
240     </select>
241     
242     <!-- 22 查询 场地魔法卡 -->
243     <select id="magic1" resultType="magic_trapCard">
244         SELECT * FROM magic_card1
245     </select>
246     
247     <!-- 21 新增 自然木龙兽卡组信息 -->
248     <select id="selectDeckInfo6" resultType="String">
249         SELECT Info FROM deckinfo WHERE deckId ='6'
250     </select>
251     
252     <!-- 21 新增 自然木龙兽卡组 -->
253     <select id="deckId6" resultType="Card">
254         SELECT * FROM deck6
255     </select>
256     
257     <select id="selectDeckInfo5" resultType="String">
258         SELECT Info FROM deckinfo WHERE deckId ='5'
259     </select>
260     
261     <select id="selectDeckInfo4" resultType="String">
262         SELECT Info FROM deckinfo WHERE deckId ='4'
263     </select>
264     
265     <select id="selectDeckInfo3" resultType="String">
266         SELECT Info FROM deckinfo WHERE deckId ='3'
267     </select>
268     
269     <!-- 19 卡组信息 -->
270     <!-- SELECT Info FROM deckinfo WHERE deckId='2'; -->
271     <select id="selectDeckInfo2" resultType="String">
272         SELECT Info FROM deckinfo WHERE deckId ='2'
273     </select>
274     
275     <!-- 17卡组联动 改为自然木龙兽卡组 -->
276     <select id="deckId5" resultType="Card">
277         SELECT * FROM deck5
278     </select>
279     
280     <!-- 17 卡组联动 改为自然竹笋卡组 -->
281     <select id="deckId4" resultType="Card">
282         SELECT * FROM deck4
283     </select>
284     
285     <!-- 17 卡组联动 改为黑魔导少女卡组 -->
286     <select id="deckId3" resultType="Card">
287         SELECT * FROM deck3
288     </select>
289     
290     <!-- 17卡组联动  由13选择卡组更改而成 -->
291     <select id="deckId2" resultType="Card">
292         SELECT * FROM deck2
293     </select>
294     
295     
296     <!-- 13 选择卡组  选择从db中查询deck3表中的卡组 -->
297     <!-- <select id="deckId3" resultType="Card">
298         SELECT * FROM deck3
299     </select> -->
300     
301     <!-- 13 选择卡组  选择从db中查询deck2表中的卡组 -->
302     <!-- <select id="deckId2" resultType="Card">
303         SELECT * FROM deck2
304     </select> -->    
305     
306     
307 </mapper>
DeckDao.xml
复制代码

 

复制代码
 1 package shanhai.mapper;
 2 
 3 import java.util.List;
 4 import shanhai.pojo.Picture;
 5 
 6 public interface PictureDao {
 7     public void addPicName(String picName);                // 在数据表中保存图片的名称
 8     public List<Picture> queryAll();                    // 查询图片列表
 9 
10 }
PictureDao
复制代码
复制代码
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 3 <mapper namespace="shanhai.mapper.PictureDao">        <!-- 命名空间,包名可能会变 -->
 4     
 5     <!--  在数据表中保存图片的名称  public void addPicName(String picName);  -->
 6     <insert id="addPicName" parameterType="String">
 7         INSERT INTO picture (picName) VALUES(#{picName})
 8     </insert>
 9 
10     <!--  查询图片列表  public List<String> queryAll();  --> 
11     <!-- java.lang.String -->
12     <select id="queryAll" resultType="Picture">
13         SELECT * FROM picture 
14     </select>
15     
16 </mapper>
PictureDao.xml
复制代码

 

WEB-INF下jsp包中的jsp

复制代码
  1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2 <%@ page trimDirectiveWhitespaces="true"%>
  3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4 <%@ taglib prefix="itheima" uri="http://itcast.cn/common/"%>
  5 <%
  6     String path = request.getContextPath();
  7     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
  8             + path + "/";
  9 %>
 10 <!DOCTYPE html>
 11 <html xmlns="http://www.w3.org/1999/xhtml">
 12 <head>
 13 <meta charset="utf-8">
 14 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 15 <meta name="viewport" content="width=device-width, initial-scale=1">
 16 <meta name="description" content="">
 17 <meta name="author" content="">
 18 <title>书架</title>
 19 <link href="<%=basePath%>css/bootstrap.min.css" rel="stylesheet">
 20 <link href="<%=basePath%>css/metisMenu.min.css" rel="stylesheet">
 21 <link href="<%=basePath%>css/dataTables.bootstrap.css" rel="stylesheet">
 22 <link href="<%=basePath%>css/sb-admin-2.css" rel="stylesheet">
 23 <link href="<%=basePath%>css/font-awesome.min.css" rel="stylesheet" type="text/css">
 24 <link href="<%=basePath%>css/boot-crm.css" rel="stylesheet" type="text/css">
 25 </head>
 26 <body>
 27 
 28     <jsp:include   page="head.jsp" flush="true"/>
 29 <div class="col-sm-10"> 
 30     <div  id="mainContent">    
 31 <div class="panel panel-info">
 32     <div class="panel-heading">
 33         <h3 class="panel-title">自学时,阅读的编程相关的书籍,记录进度</h3>
 34     </div>
 35     <div class="panel-body">    
 36 
 37 <!-- 38 查询当前月份的数据-->
 38 <%-- <form action="${pageContext.request.contextPath }/deck/BookReadingDateQuery136">
 39         <select name="Query136">
 40             <option>--请选择时间段--</option>
 41             <option value="1">当前月份内</option>
 42             <option value="3">3个月内</option>
 43             <option value="6">6个月内</option>
 44         </select>
 45         <input type="submit" class="btn btn-default" value="查询" name="submit" >
 46 </form>     --%>    
 47 
 48 <!-- 39 历史时间查询,分别为一,三,六个月内 -->    
 49 <nav class="navbar navbar-default" role="navigation">
 50     <div class="container-fluid"> 
 51     <div class="navbar-header">
 52         <a class="navbar-brand" href="#">时间</a>
 53         <ul class="nav navbar-nav">
 54             <li class="dropdown">
 55                 <a href="#" class="dropdown-toggle" data-toggle="dropdown">
 56                     历史
 57                     <b class="caret"></b>
 58                 </a>
 59 <ul class="dropdown-menu">
 60     <li><a href="${pageContext.request.contextPath }/readingDateQuery.html?Query136=1">本月</a></li>
 61     <li><a href="${pageContext.request.contextPath }/readingDateQuery.html?Query136=3">三个月内</a></li>
 62     <li><a href="${pageContext.request.contextPath }/readingDateQuery.html?Query136=6">六个月内</a></li>
 63 </ul>
 64             </li>
 65         </ul>
 66     </div>
 67     </div>
 68 </nav>
 69 
 70 <!-- 38 据时间段查询 -->
 71 <form action="${pageContext.request.contextPath }/deck/BookReadingDateQuery">
 72         <label>起始时间: </label>
 73         <input type="date" class="date_info" name="startDateQuery">-
 74         <input type="date" class="date_info" name="endDateQuery">
 75         <input type="submit" class="btn btn-default" value="查询" name="submit" >
 76 </form>
 77 
 78 
 79 <!-- 29 批量删除 使用的form -->    
 80 <form id="form1" action="${pageContext.request.contextPath }/deck/deletesBook.action" method="post">    
 81 
 82 <!-- </form> -->
 83 
 84     <table class="table table-hover table-striped table-bordered">
 85         <thead>
 86             <tr>
 87 <th><input type="checkbox" onclick="checkBox()"  id="ids" name="ids" value="" form="form1"></th>
 88                 <th>id</th>
 89                 <th>bookTitle</th>
 90                 <th>progress</th>
 91                 <th>unreadChapters</th>
 92                 <th>subject</th>
 93                 <th>note</th>
 94                 <th>demo</th>
 95                 <th>bookUse</th>
 96                 <th>format</th>
 97                 <th>startDate</th>
 98                 <th>endDate</th>
 99                 
100 <th>                 <!-- 24 书籍添加-->    
101     <button type="button" class="btn btn-primary btn-xs" data-toggle="modal" data-target="#bookAdd">添加</button>
102     <input type="submit" value="删除" form="form1" class="btn btn-danger btn-xs">
103 </th>
104             </tr>
105         </thead>
106         
107         <tbody>
108             <c:forEach items="${BookList}" var="list">
109                 <tr>
110                     <!-- name由ids改成checkOne -->
111                     <td><input type="checkbox" name="ids" value="${list.id}"></td>
112                     <td>${list.id}</td>
113                     <td>${list.bookTitle}</td>
114                     <td>${list.progress}</td>
115                     <td>${list.unreadChapters}</td>
116                     <td>${list.subject}</td>
117                     <td>${list.note}</td>
118                     <td>${list.demo}</td>
119                     <td>${list.bookUse}</td>
120                     <td>${list.format}</td>
121                     <td>${list.startDate}</td>
122                     <td>${list.endDate}</td>
123         
124 <td>
125     <button type="button" class="btn btn-primary btn-xs" data-toggle="modal" 
126     data-target="#bookUpdateModal" onclick="showFormBook(${list.id})">修改</button>
127     <button type="button" class="btn btn-danger btn-xs" onclick="ajaxDelBook(${list.id})">删除</button>                
128 </td>
129 
130                 </tr>
131             </c:forEach>
132         </tbody>
133     </table>
134     
135 </form>    
136 
137 
138 </div>
139 </div>
140 
141 <div class="modal fade" id="bookAdd" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
142     <div class="modal-dialog">
143         <div class="modal-content">
144             <div class="modal-header">
145                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
146                     &times;
147                 </button>
148                 <h4 class="modal-title" id="myModalLabel">
149                     添加书籍
150                 </h4>
151             </div>
152             
153 <div class="modal-body">
154 <!-- 【添加】 模态框中的表单form -->        
155 <form class="form-horizontal" id="modaladdBook">
156         <div>
157             <label>bookTitle:</label>
158             <input type="text" id="bookTitle" name="bookTitle" autocomplete="off">
159         </div>
160         <div>
161             <label>progress: </label>
162             <select id="progress" name="progress" required>
163                 <option>--请选择--</option>
164                 <option value="已读">已读</option>
165                 <option value="正在读">正在读</option>
166                 <option value="放弃">放弃</option>
167             </select>
168         </div>
169         <div>
170             <label>unread:</label>
171             <input type="text" id="unreadChapters" name="unreadChapters" autocomplete="off">
172         </div>
173         <div>
174             <label>subject:</label>
175             <input type="text" id="subject" name="subject" autocomplete="off"> 
176         </div>
177         <div>
178             <label>note: </label>
179             <select id="note" name="note" required>
180                 <option>--请选择--</option>
181                 <option value="无">无</option>
182                 <option value="Word">Word</option>
183                 <option value="Excel">Excel</option>
184             </select>
185         </div>
186         <div>
187             <label>demo: </label>
188             <select id="demo" name="demo" required>
189                 <option>--请选择--</option>
190                 <option value="未练习">未练习</option>
191                 <option value="练习">练习</option>
192             </select>
193         </div>
194         <div>
195             <label>bookUse: </label>
196             <select id="bookUse" name="bookUse" required>
197                 <option>--请选择--</option>
198                 <option value="未使用">未使用</option>
199                 <option value="应用">应用</option>
200             </select>
201         </div>
202         <div>
203             <label>format: </label>
204             <select id="format" name="format" required>
205                 <option>--请选择--</option>
206                 <option value="PDF">PDF</option>
207                 <option value="实体书">实体书</option>
208             </select>
209         </div>
210         <div>
211             <label>startDate</label>
212             <input type="date" id="startDate2" name="startDate">
213         </div>
214         <div>
215             <label>endDate:</label>
216             <input type="date" id="endDate2" name="endDate"> 
217         </div>
218         <!-- <div>
219             <label>startDate:</label>
220             <input type="text" id="startDate" name="startDate" autocomplete="off"> 
221         </div>
222         <div>
223             <label>endDate:</label>
224             <input type="text" id="endDate" name="endDate" autocomplete="off"> 
225         </div> -->
226 </form>                
227 </div>
228             <div class="modal-footer">
229                 <button type="button" class="btn btn-primary" onclick="modalAddBook()">添加</button>
230                 <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
231             </div>
232         </div>    
233     </div>    
234 </div>    <!-- 【添加】 模态框的结束div,包含form -->
235 
236 
237 <div class="modal fade" id="bookUpdateModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel2" aria-hidden="true">
238     <div class="modal-dialog">
239         <div class="modal-content">
240             <div class="modal-header">
241                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
242                     &times;
243                 </button>
244                 <h4 class="modal-title" id="myModalLabel2">
245                     修改书籍信息
246                 </h4>
247             </div>
248             <div class="modal-body">
249     <!-- 【修改】 模态框中的表单form -->
250     <form class="form-horizontal" id="modalUpdate_formBook">
251         <div>
252             <label>id:</label>
253             <input type="text" id="id2" name="id" autocomplete="off">
254         </div>
255         <div>
256             <label>bookTitle:</label>
257             <input type="text" id="bookTitle2" name="bookTitle" autocomplete="off">
258         </div>
259         <div>
260             <label>progress:</label>
261             <input type="text" id="progress2" name="progress" autocomplete="off">
262         </div>
263         <div>
264             <label>unread:</label>
265             <input type="text" id="unreadChapters2" name="unreadChapters" autocomplete="off">
266         </div>
267         <div>
268             <label>subject:</label>
269             <input type="text" id="subject2" name="subject" autocomplete="off"> 
270         </div>
271         
272         <div>
273             <label>note:</label>
274             <input type="text" id="note2" name="note" autocomplete="off">     
275         </div>
276         <div>
277             <label>demo:</label>
278             <input type="text" id="demo2" name="demo" autocomplete="off">
279         </div>
280         <div>
281             <label>bookUse:</label>
282             <input type="text" id="bookUse2" name="bookUse" autocomplete="off">
283         </div>
284         <div>
285             <label>format:</label>
286             <input type="text" id="format2" name="format" autocomplete="off">
287         </div>
288         <div>
289             <label>startDate</label>
290             <input type="date" id="startDate2" name="startDate">
291         </div>
292         <div>
293             <label>endDate:</label>
294             <input type="date" id="endDate2" name="endDate"> 
295         </div>
296         <!-- <div>
297             <label>startDate:</label>
298             <input type="text" id="startDate2" name="startDate" autocomplete="off"> 
299         </div>
300         <div>
301             <label>endDate:</label>
302             <input type="text" id="endDate2" name="endDate" autocomplete="off"> 
303         </div> -->
304         
305     </form>                
306         </div>    
307             <div class="modal-footer">
308                 <button type="button" class="btn btn-primary" onclick="modalUpdateSubmitBook()">修改</button>
309                 <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
310             </div>
311         </div>
312     </div>
313 </div>        <!--【修改】 的结束div -->
314 
315 
316 </div>
317 </div>
318 
319 <script type="text/javascript">
320 
321         function modalAddBook() {        // 24添加  获得添加的模态框的表单中填写的数据
322             $.ajax({        
323                 type:"POST",
324                 url:"<%=basePath%>deck/addBook.action",
325                 data:$("#modaladdBook").serialize(),        // 添加的模态框中的form的id
326                 success:function() {
327                     alert("添加书籍成功");
328                     $("#bookAdd").modal("hide");        // 通过模态框的id,隐藏模态框 
329                     $(".modal-backdrop").remove();        // 去除,模态框添加后,灰屏
330                     history.go(0);                        // 去除灰屏后,无法打开模态框,so刷新一下
331                 }
332             });
333         }
334         
335         function showFormBook(id) {         // 【修改】  打开模态框时显示"准备修改的内容" 
336             $.ajax({
337                 type:"POST",
338                 url:"<%=basePath%>deck/showFormBook.action",
339                 data:{"id":id},
340                 success:function(data) {                          // 返回通过bookTitle查询    
341 //                     alert(data);
342                     
343                     $("#id2").val(data.id);                        // 将返回的数据,设置给form    
344                     $("#bookTitle2").val(data.bookTitle);            
345                     $("#progress2").val(data.progress);
346                     $("#unreadChapters2").val(data.unreadChapters);
347                     $("#subject2").val(data.subject);
348                     $("#note2").val(data.note);
349                     $("#demo2").val(data.demo);
350                     $("#bookUse2").val(data.bookUse);
351                     $("#format2").val(data.format);
352                     $("#startDate2").val(data.startDate);
353                     $("#endDate2").val(data.endDate);
354                 },
355                 dataType:"json"
356             });
357         }
358         
359         function modalUpdateSubmitBook() {    // 【修改】 将从修改的模太框中的表单获得的数据提交
360             $.ajax({        
361                 type:"POST",    
362                 url:"<%=basePath%>deck/modalUpdateSubmitBook.action",
363                 data:$("#modalUpdate_formBook").serialize(),    // 获得修改的模态框中的表单
364                 success:function() {    
365                     alert("修改书籍成功");
366                     $("#bookUpdateModal").modal("hide");    
367                     $(".modal-backdrop").remove();        // 去除,模态框修改数据后,灰屏
368                     history.go(0);                        // 去除灰屏后,无法打开模态框,so刷新一下
369                 }                                            
370             });  
371         }
372         
373         function ajaxDelBook(id) {                // 【删除】使用AJAX提交id到服务器
374             $.ajax({
375                 type:"POST",
376                 url:"<%=basePath%>deck/deleteBook.action",
377                 data:{"id":id},                    // 准备接收的是id
378                 success:function() {              // 返回通过id查询到的卡片的数据        
379                     alert("删除成功");
380                     history.go(0);
381                 }
382             });
383         }
384         
385         /* function todelect(){
386             var Checkbox = false;                            //默认复选框为空
387             $("input[name='id']").each(function(){            //获取复选框节点id
388                 if (this.checked==true) {        
389                     Checkbox=true;                            //已勾选
390                 }
391             });
392             
393             if (Checkbox){                                    //boolean值为true
394                 var t=confirm("您确认要删除选中的内容吗?");  //弹出对话进行警告
395                 if (t==false) return false;                    //不勾选不处理
396                 obj = document.getElementsByName("id");  //将复选框定义成一个jquery对象
397                 heck_val = [];                             //定义一个数组
398                 for(k in obj){                             //k相当于i,往这个jquery对象添加勾选的id;
399                     if(obj[k].checked)                     //选中的都放进 数组里
400                     check_val.push(obj[k].value);
401                 } */
402         
403             
404         <%-- function deletsBook(ids) {                // 29 批量删除 修改版    
405             alert("准备批量删除")
406             alert(ids);
407         
408             $.ajax({
409                 type:"POST",
410                 url:"<%=basePath%>deck/deletesBook.action",
411                 data:{"ids":ids},
412                 success:function() {                  
413                     alert("批量删除成功");
414                     history.go(0);
415                 }
416             });
417         } --%>
418         
419         function checkBox(){    // 29 全选 当全选的复选框勾选时,设置主体中的复选框的值为勾选,为false。                    
420             var checkAllEle = document.getElementById("ids");    
421             if(checkAllEle.checked==true){         
422                 var checkOnes = document.getElementsByName("ids");
423                 for(var i=0;i<checkOnes.length;i++){
424                     checkOnes[i].checked=true;
425                 }
426             }else{        // 否则,即全不选,主体中的复选框的值什么都不传,并不是false。
427                 var checkOnes = document.getElementsByName("ids");
428                 for(var i=0;i<checkOnes.length;i++){
429                     checkOnes[i].checked=false;        // 由于手动设置为false,最终才为false
430                 }
431             }
432         } 
433         
434         $(document).ready(function () {
435             var time = new Date();
436             var day = ("0" + time.getDate()).slice(-2);
437             var month = ("0" + (time.getMonth() + 1)).slice(-2);
438             var today = time.getFullYear() + "-" + (month) + "-" + (day);
439             $('.date_info').val(today);
440         })
441         
442 </script>    
443 
444 
445 </body>
446 </html>
book.jsp
复制代码
复制代码
  1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2 <%@ page trimDirectiveWhitespaces="true"%>
  3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4 <%@ taglib prefix="itheima" uri="http://itcast.cn/common/"%>
  5 <%
  6     String path = request.getContextPath();
  7     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
  8             + path + "/";
  9 %>
 10 <!DOCTYPE html>
 11 <html xmlns="http://www.w3.org/1999/xhtml">
 12 <head>
 13 <meta charset="utf-8">
 14 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 15 <meta name="viewport" content="width=device-width, initial-scale=1">
 16 <meta name="description" content="">
 17 <meta name="author" content="">
 18 <title>管理系统的主页面</title>
 19 <link href="<%=basePath%>css/bootstrap.min.css" rel="stylesheet">
 20 <link href="<%=basePath%>css/metisMenu.min.css" rel="stylesheet">
 21 <link href="<%=basePath%>css/dataTables.bootstrap.css" rel="stylesheet">
 22 <link href="<%=basePath%>css/sb-admin-2.css" rel="stylesheet">
 23 <link href="<%=basePath%>css/font-awesome.min.css" rel="stylesheet" type="text/css">
 24 <link href="<%=basePath%>css/boot-crm.css" rel="stylesheet" type="text/css">
 25 </head>
 26 <body>
 27     
 28     <%-- 您使用的账户的用户名为: ${loginUserName } </br>  <!-- 显示用户信息   --> --%>
 29     <div class="text-right">                                    
 30         <c:if test="${empty loginUserName }">                          <!-- 【用户名显示】 -->
 31             <a href="<%=basePath%>/user/login.action">登录</a>          <!-- 【用户登录】 -->
 32             <a href="<%=basePath%>/user/toRegister.action">注册</a>      <!-- 【用户注册】 -->    
 33         </c:if>
 34         <c:if test="${!empty loginUserName }">
 35             欢迎您,${loginUserName } &nbsp;
 36             <a href="<%=basePath%>/user/myProfile.action">我的资料</a>
 37             <a href="<%=basePath%>/user/logOut.action">退出</a>
 38         </c:if>
 39     </div>
 40     
 41     <jsp:include   page="head.jsp" flush="true"/>    
 42 
 43 <div class="col-sm-10"> 
 44     <div  id="mainContent">
 45 <div class="panel panel-success">
 46     <div class="panel-heading">
 47         <h3 class="panel-title">卡片页面</h3>
 48     </div>
 49     <div class="panel-body">
 50         
 51         
 52         <form class="form-inline" action="${pageContext.request.contextPath }/card/list" method="post">
 53             <div class="form-group">
 54                 <label for="Name">名称</label> 
 55                 <input type="text" class="form-control" id="Name" 
 56                     value="${Name }" name="Name" >
 57             </div>
 58                 
 59             <div class="form-group">
 60                 <label for="raceFrom">种族</label> 
 61                 <select    class="form-control" id="raceFrom" placeholder="种族" name="race" >
 62                         <option value="">${Race }</option>
 63                         <option value="">默认为空</option>
 64                         <option value ="兽族">兽族</option>
 65                         <option value ="岩石族">岩石族</option>
 66                         <option value="龙族">龙族</option>
 67                         <option value="植物族">植物族</option>
 68                         <option value="昆虫族">昆虫族</option>
 69                         <option value="魔法师族">魔法师族</option>
 70                 </select>
 71             </div>
 72             
 73             <div class="form-group">
 74                 <label>攻击力范围</label>
 75                 <input id="atk1" name="atk1" /> -
 76                 <input id="atk2" name="atk2" />
 77             </div>
 78             
 79             <button type="submit" class="btn btn-default">查询</button>
 80         </form>
 81     </div>
 82 </div>
 83 
 84     <table class="table table-hover table-striped table-bordered">
 85         <thead>
 86             <tr>
 87                 <th>ID</th>
 88                 <th>名称</th>
 89                 <th>属性</th>
 90                 <th>种族</th>
 91                 <th>攻击力</th>
 92                 <th>守备力</th>
 93                 <th>     <!-- 【添加】-->    
 94                     <button class="btn btn-primary btn-xs" data-toggle="modal" data-target="#AddModal">添加</button>
 95                     <button class="btn btn-primary btn-xs" >全选</button>
 96                 </th>
 97 
 98             </tr>
 99         </thead>
100         
101         <tbody>    <!-- 使用分页查询后,由list改为了page.rows -->
102             <c:forEach items="${page.rows}" var="list">
103                 <tr>
104                     <td>${list.id}</td>
105                     <td>${list.name}</td>
106                     <td>${list.attribute}</td>
107                     <td>${list.race}</td>
108                     <td>${list.atk}</td>
109                     <td>${list.def}</td>
110 <td>
111 <button class="btn btn-primary btn-xs" data-toggle="modal" 
112 data-target="#cardUpdateModal" onclick="showFormCard(${list.id})">修改</button>
113 <button class="btn btn-danger btn-xs" onclick="ajaxDelCard(${list.id})">删除</button>            
114 </td>
115                 </tr>
116             </c:forEach>
117         </tbody>
118 </table>
119     
120     总记录数: ${Total_number }    <br>
121     总页数: ${totalPage_number } <br>
122     当前页数: ${currentPage_number }    <br>
123     每页显示条数: ${Size_number } <br>
124 
125     <!-- 分页按钮跳转 -->
126     <div class="col-md-12 text-center">        
127         <itheima:page url="${pageContext.request.contextPath }/card/list.action" />
128     </div>
129     
130     
131 <!--【添加】 通过id可以打开 -->     
132 <div class="modal fade" id="AddModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
133     <div class="modal-dialog">
134         <div class="modal-content">
135             <div class="modal-header">
136                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
137                     &times;
138                 </button>
139                 <h4 class="modal-title" id="myModalLabel">
140                     添加数据
141                 </h4>
142             </div>
143             <div class="modal-body">
144     <!-- 【添加】 模态框中的表单form -->        
145     <form class="form-horizontal" id="modaladdform">
146         <div>
147             <label>id:</label>
148             <input type="text" id="id" name="id" autocomplete="off">
149         </div>
150         <div>
151             <label>name:</label>
152             <input type="text" id="name" name="name" autocomplete="off">
153         </div>
154         <div>
155             <label>attribute:</label>
156             <input type="text" id="attribute" name="attribute" autocomplete="off">
157         </div>
158         <div>
159             <label>race:</label>
160             <input type="text" id="race" name="race" autocomplete="off"> 
161         </div>
162         <div>
163             <label>atk:</label>
164             <input type="text" id="atk" name="atk" autocomplete="off">     
165         </div>
166         <div>
167             <label>card_def:</label>
168             <input type="text" id="def" name="def" autocomplete="off">
169         </div>
170     </form>                
171 </div>
172             <div class="modal-footer">
173                 <button type="button" class="btn btn-primary" onclick="modalAddCard()">添加</button>
174                 <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
175             </div>
176         </div>    
177     </div>    
178 </div>    <!-- 【添加】 模态框的结束div,包含form -->
179 
180 <!-- 【修改】 在模态框中修改表单、提交表单。需要表单有id才可能通过id进行操作 -->
181 <div class="modal fade" id="cardUpdateModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel2" aria-hidden="true">
182     <div class="modal-dialog">
183         <div class="modal-content">
184             <div class="modal-header">
185                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
186                     &times;
187                 </button>
188                 <h4 class="modal-title" id="myModalLabel2">
189                     模态框标题:修改
190                 </h4>
191             </div>
192             <div class="modal-body">
193     <!-- 【修改】 模态框中的表单form -->
194     <form class="form-horizontal" id="modalUpdate_form">
195         <div>
196             <label>id:</label>
197             <input type="text" id="id2" name="id" autocomplete="off">
198         </div>
199         <div>
200             <label>name:</label>
201             <input type="text" id="name2" name="name" autocomplete="off">
202         </div>
203         <div>
204             <label>attribute:</label>
205             <input type="text" id="attribute2" name="attribute" autocomplete="off">
206         </div>
207         <div>
208             <label>race:</label>
209             <input type="text" id="race2" name="race" autocomplete="off"> 
210         </div>
211         <div>
212             <label>atk:</label>
213             <input type="text" id="modalatk2" name="atk" autocomplete="off">     
214         </div>
215         <div>
216             <label>def:</label>
217             <input type="text" id="def2" name="def" autocomplete="off">
218         </div>
219     </form>                
220         </div>    
221             <div class="modal-footer">
222                 <button type="button" class="btn btn-primary" onclick="modalUpdateSubmit()">修改</button>
223                 <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
224             </div>
225         </div>
226     </div>
227 </div>        <!--【修改】 的结束div -->     
228 
229 </div>
230 </div>
231 
232     <script src="<%=basePath%>js/jquery.min.js"></script>
233     <script src="<%=basePath%>js/bootstrap.min.js"></script>
234     <script src="<%=basePath%>js/metisMenu.min.js"></script>
235     <script src="<%=basePath%>js/jquery.dataTables.min.js"></script>
236     <script src="<%=basePath%>js/dataTables.bootstrap.min.js"></script>
237     <script src="<%=basePath%>js/sb-admin-2.js"></script>    
238     
239 <script type="text/javascript">
240 
241         function modalAddCard() {        // 【添加】 获得添加的模态框的表单中填写的数据
242             $.ajax({        
243                 type:"POST",
244                 url:"<%=basePath%>card/add.action",
245                 data:$("#modaladdform").serialize(),        // 添加的模态框中的form的id
246                 success:function() {
247                     alert("添加数据成功");
248                     $("#AddModal").modal("hide");            // 通过模态框的id,隐藏模态框 
249                     $(".modal-backdrop").remove();        // 去除,模态框添加后,灰屏
250                     history.go(0);                        // 去除灰屏后,无法打开模态框,so刷新一下
251                 }
252             });
253         }
254         
255         function showFormCard(id) {            // 【修改】  打开模态框时显示"准备修改的内容" 
256             $.ajax({
257                 type:"POST",
258                 url:"<%=basePath%>card/showFormCard.action",
259                 data:{"id":id},
260                 success:function(data) {                      // 返回通过id查询到的卡片数据    
261                     $("#id2").val(data.id);                    // 将返回的数据,设置给form    
262                     $("#name2").val(data.name);
263                     $("#attribute2").val(data.attribute);
264                     $("#race2").val(data.race);
265                     $("#modalatk2").val(data.atk);
266                     $("#def2").val(data.def);
267                 },
268                 dataType:"json"
269             });
270         }
271         
272         function modalUpdateSubmit() {    // 【修改】 将从修改的模太框中的表单获得的数据提交
273             $.ajax({        
274                 type:"POST",    
275                 url:"<%=basePath%>card/modalUpdateSubmit.action",
276                 data:$("#modalUpdate_form").serialize(),    // 获得修改的模态框中的表单
277                 success:function() {                        
278                     alert("修改数据并提交成功");                
279                     $("#cardUpdateModal").modal("hide");    
280                     $(".modal-backdrop").remove();        // 去除,模态框修改数据后,灰屏
281                     history.go(0);                        // 去除灰屏后,无法打开模态框,so刷新一下
282                 }                                            
283             });  
284         }
285         
286         function ajaxDelCard(id) {            // 【删除】使用AJAX提交id到服务器
287             $.ajax({
288                 type:"POST",
289                 url:"<%=basePath%>card/delete.action",
290                 data:{"id":id},                // 准备接收的是id
291                 success:function() {          // 返回通过id查询到的卡片的数据        
292                     alert("删除成功");
293                     history.go(0);
294                 }
295             });
296         }
297         
298 </script>
299 
300 </html>
card.jsp
复制代码
复制代码
  1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2 <%@ page trimDirectiveWhitespaces="true"%>
  3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4 <%@ taglib prefix="itheima" uri="http://itcast.cn/common/"%>
  5 <%
  6     String path = request.getContextPath();
  7     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
  8             + path + "/";
  9 %>
 10 <!DOCTYPE html>
 11 <html xmlns="http://www.w3.org/1999/xhtml">
 12 <head>
 13 <meta charset="utf-8">
 14 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 15 <meta name="viewport" content="width=device-width, initial-scale=1">
 16 <meta name="description" content="">
 17 <meta name="author" content="">
 18 <title>查看卡组</title>
 19 <link href="<%=basePath%>css/bootstrap.min.css" rel="stylesheet">
 20 <link href="<%=basePath%>css/metisMenu.min.css" rel="stylesheet">
 21 <link href="<%=basePath%>css/dataTables.bootstrap.css" rel="stylesheet">
 22 <link href="<%=basePath%>css/sb-admin-2.css" rel="stylesheet">
 23 <link href="<%=basePath%>css/font-awesome.min.css" rel="stylesheet" type="text/css">
 24 <link href="<%=basePath%>css/boot-crm.css" rel="stylesheet" type="text/css">
 25 
 26 <script src="<%=basePath%>js/jquery.min.js"></script>
 27 <script src="<%=basePath%>js/bootstrap.min.js"></script>
 28 <script src="<%=basePath%>js/metisMenu.min.js"></script>
 29 <script src="<%=basePath%>js/jquery.dataTables.min.js"></script>
 30 <script src="<%=basePath%>js/dataTables.bootstrap.min.js"></script>
 31 <script src="<%=basePath%>js/sb-admin-2.js"></script>
 32 </head>
 33 <body>
 34     
 35     <jsp:include   page="head.jsp" flush="true"/>
 36     
 37 <div class="col-sm-10"> 
 38     <div  id="mainContent">
 39         
 40 <div class="panel panel-info">
 41     <div class="panel-heading">
 42         <h3 class="panel-title">卡组页面</h3>
 43     </div>
 44     <div class="panel-body">
 45     
 46 
 47     <!-- 13 选择卡组 -->
 48     <form class="form-inline" action="${pageContext.request.contextPath }/deck/list" method="post">
 49         
 50         <!-- <select name="deckId">   原13选择卡组时,使用的单个列表,后改为列表联动,即17卡组联动
 51             <option value="1">自然竹笋</option>
 52             <option value="2">黑魔导少女</option>
 53         </select> -->
 54         
 55         <div class="form-group">
 56             <label for="province">种类</label>
 57             <select id="deckOne" name="deckOne" required>
 58                 <option>--请先选择--</option>
 59                 <option value="0">黑魔导</option>
 60                 <option value="1">自然</option>
 61             </select>
 62             <select id="deckTwo" name="deckTwo">
 63                 <option>--请再选择--</option>
 64 
 65             </select>
 66         </div>
 67         <button type="submit" class="btn btn-default">查询</button>
 68     </form>
 69 
 70             
 71     <!-- 19 卡组信息 -->
 72     <div>
 73          <label>卡组信息</label>
 74              <textarea name="deckInfo" maxlength="20" 
 75                  placeholder="请在列表中,选择不同种类和流派的卡组">${deckInfo}</textarea> 
 76     </div>
 77     
 78     <table class="table table-hover table-striped table-bordered">
 79         <thead>
 80             <tr>
 81                 <th>ID</th>
 82                 <th>名称</th>
 83                 <th>属性</th>
 84                 <th>种族</th>
 85                 <th>攻击力</th>
 86                 <th>守备力</th>
 87             </tr>
 88         </thead>
 89         
 90         <tbody>        <!-- 使用分页查询后,由list改为了page.rows -->
 91             <c:forEach items="${deckIdList}" var="list">
 92                 <tr>
 93                     <td>${list.id}</td>
 94                     <td>${list.name}</td>
 95                     <td>${list.attribute}</td>
 96                     <td>${list.race}</td>
 97                     <td>${list.atk}</td>
 98                     <td>${list.def}</td>
 99                 </tr>
100             </c:forEach>
101         </tbody>
102     </table>
103 
104 </div>
105 </div>
106 
107 </div>
108 </div>    
109 
110 <script type="text/javascript">
111         
112         $(function(){        // 17 卡组联动
113             var cities = new Array(2);
114             cities[0] = new Array("黑魔术师","黑魔导少女");
115             cities[1] = new Array("自然竹笋","自然木鳞龙","自然木龙兽");
116             
117             $("#deckOne").change(function(){
118                 $("#deckTwo").empty();
119                 
120                 var val = this.value;
121                 $.each(cities,function(i,n){
122                     if(val==i){
123                         $.each(cities[i], function(j,m) {
124                             var textNode = document.createTextNode(m);
125                             var opEle = document.createElement("option");
126                             $(opEle).append(textNode);
127                             $(opEle).appendTo($("#deckTwo"));
128                         });
129                     }
130                 });
131                 
132             });
133         });
134 
135 </script>
136 
137 </body>
138 </html>
deck.jsp
复制代码
复制代码
 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 2 <%@ page trimDirectiveWhitespaces="true"%>
 3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 4 <%
 5     String path = request.getContextPath();
 6     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
 7             + path + "/";
 8 %>
 9 <!DOCTYPE html>
10 <html xmlns="http://www.w3.org/1999/xhtml">
11 <head>
12 <meta charset="utf-8">
13 <meta http-equiv="X-UA-Compatible" content="IE=edge">
14 <meta name="viewport" content="width=device-width, initial-scale=1">
15 <meta name="description" content="">
16 <meta name="author" content="">
17 <title>左侧导航栏</title>
18 <link href="<%=basePath%>css/bootstrap.min.css" rel="stylesheet">
19 <link href="<%=basePath%>css/metisMenu.min.css" rel="stylesheet">
20 <link href="<%=basePath%>css/dataTables.bootstrap.css" rel="stylesheet">
21 <link href="<%=basePath%>css/sb-admin-2.css" rel="stylesheet">
22 <link href="<%=basePath%>css/font-awesome.min.css" rel="stylesheet" type="text/css">
23 <link href="<%=basePath%>css/boot-crm.css" rel="stylesheet" type="text/css">
24 <meta name="viewport" content="width=device-width, initial-scale=1">
25 <link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.css">
26 
27 </head>
28 <body>
29     <div class="col-sm-2"> 
30         <div class="panel-body">
31             <h4><i class="fa fa-pencil"></i> 所有菜单</h4>
32             <ul class="nav nav-pills nav-stacked mail-nav" >
33                 <li><a href="<%=basePath%>/card/list" style="font-size:16px;">卡片</a></li>
34                 <li><a href="<%=basePath%>/deck/list" style="font-size:16px;">卡组</a></li>
35                 <li><a href="<%=basePath%>/deck/magic_trapList" style="font-size:16px;">魔陷</a></li>
36                 <li><a href="<%=basePath%>/book/list" style="font-size:16px;">书籍</a></li>
37                 <li><a href="<%=basePath%>/picture/list" style="font-size:16px;">图片</a></li>
38                 <li><a href="<%=basePath%>/test/into" style="font-size:16px;">测试</a></li>
39             </ul>
40         </div>
41     </div>
42 
43 <script src="<%=basePath%>js/jquery.min.js"></script>
44 <script src="<%=basePath%>js/bootstrap.min.js"></script>
45 <script src="<%=basePath%>js/metisMenu.min.js"></script>
46 <script src="<%=basePath%>js/jquery.dataTables.min.js"></script>
47 <script src="<%=basePath%>js/dataTables.bootstrap.min.js"></script>
48 <script src="<%=basePath%>js/sb-admin-2.js"></script>
49 </body>
50 </html>
head.jsp
复制代码
复制代码
 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 2 <%@ page trimDirectiveWhitespaces="true"%>
 3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 4 <%
 5     String path = request.getContextPath();
 6     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
 7             + path + "/";
 8 %>
 9 <!DOCTYPE html>
10 <html>
11 <head>
12 <meta charset="utf-8">
13 <meta http-equiv="X-UA-Compatible" content="IE=edge">
14 <meta name="viewport" content="width=device-width, initial-scale=1">
15 <meta name="description" content="">
16 <meta name="author" content="">
17 <title>用户登录</title>
18 <link href="<%=basePath%>css/bootstrap.min.css" rel="stylesheet">
19 <link href="<%=basePath%>css/metisMenu.min.css" rel="stylesheet">
20 <link href="<%=basePath%>css/dataTables.bootstrap.css" rel="stylesheet">
21 <link href="<%=basePath%>css/sb-admin-2.css" rel="stylesheet">
22 <link href="<%=basePath%>css/font-awesome.min.css" rel="stylesheet" type="text/css">
23 <link href="<%=basePath%>css/boot-crm.css" rel="stylesheet" type="text/css">
24 
25 <script src="<%=basePath%>js/jquery.min.js"></script>
26 <script src="<%=basePath%>js/bootstrap.min.js"></script>
27 <script src="<%=basePath%>js/metisMenu.min.js"></script>
28 <script src="<%=basePath%>js/jquery.dataTables.min.js"></script>
29 <script src="<%=basePath%>js/dataTables.bootstrap.min.js"></script>
30 <script src="<%=basePath%>js/sb-admin-2.js"></script>
31 </head>
32 <body>
33 
34     <!-- 7 用户名正确,密码密码时,重新进入登录页面  UsePasswordError -->
35     <div>
36         <c:if test="${!empty UsePasswordError }">        <!--当提示信息不为空时,才进入提示-->                      
37             <font color="red" size="5" >${UsePasswordError }</font>
38         </c:if>
39     </div>
40 
41      <!-- 【用户登录】使用form表格提交,后续会在form中加入其它功能-->
42     <form action="${pageContext.request.contextPath }/user/userLogin.action" method="post">    
43         <div>
44             <label>用户名:</label>
45             <input id="username" type="text" name="username" autocomplete="off"
46                 value="${cookie.remembermeCookie.value}">    
47         </div>
48         <div>
49             <label>密码: </label>
50             <input id="password" type="password" name="password" 
51                 value="${cookie.remembermeCookiePassword.value}">
52         </div>
53     
54         <div class="checkbox">    
55             <label>     
56                 <!-- 14 记住用户名    -->
57                 <%-- <input type="checkbox" name="rememberme" value="1"
58                     ${not empty cookie.remembermeCookie? "checked='checked'" : ""}> 
59                     记住用户名 --%>
60                     
61                 <!-- 16 记住用户名和密码 -->    
62                 <input type="checkbox" name="remembermePassword" value="1"
63                 ${not empty cookie.remembermeCookiePassword? "checked='checked'" : ""}> 
64                     记住用户名和密码    
65                     
66             </label>
67         </div>
68         
69         <div>
70             <input id="login" class="btn btn-default" type="submit" value="登录" >    
71             <input type="reset" class="btn btn-default" value="重置">
72         </div>
73     </form>
74     
75     <!-- 3 登录页面,添加注册链接 -->
76     <div class="btn btn-default">
77         <a href="<%=basePath%>/user/toRegister.action">注册</a>
78     </div>
79     
80     <!-- 9 忘记密码  -->
81     <div class="btn btn-default">
82         <a href="<%=basePath%>/user/toForGet.action">忘记密码</a>    
83     </div>
84       
85 </body>
86 </html>
login.jsp
复制代码
复制代码
 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 2 <%@ page trimDirectiveWhitespaces="true"%>
 3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 4 <%
 5     String path = request.getContextPath();
 6     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
 7             + path + "/";
 8 %>
 9 <!DOCTYPE html>
10 <html>
11 <head>
12 <meta charset="utf-8">
13 <meta http-equiv="X-UA-Compatible" content="IE=edge">
14 <meta name="viewport" content="width=device-width, initial-scale=1">
15 <meta name="description" content="">
16 <meta name="author" content="">
17 <title>登录成功的页面</title>
18 <link href="<%=basePath%>css/bootstrap.min.css" rel="stylesheet">
19 <link href="<%=basePath%>css/metisMenu.min.css" rel="stylesheet">
20 <link href="<%=basePath%>css/dataTables.bootstrap.css" rel="stylesheet">
21 <link href="<%=basePath%>css/sb-admin-2.css" rel="stylesheet">
22 <link href="<%=basePath%>css/font-awesome.min.css" rel="stylesheet" type="text/css">
23 <link href="<%=basePath%>css/boot-crm.css" rel="stylesheet" type="text/css">
24 
25 <script src="<%=basePath%>js/jquery.min.js"></script>
26 <script src="<%=basePath%>js/bootstrap.min.js"></script>
27 <script src="<%=basePath%>js/metisMenu.min.js"></script>
28 <script src="<%=basePath%>js/jquery.dataTables.min.js"></script>
29 <script src="<%=basePath%>js/dataTables.bootstrap.min.js"></script>
30 <script src="<%=basePath%>js/sb-admin-2.js"></script>
31 </head>
32 <body>
33 
34     <div>恭喜您登录成功</div>
35     <%--  您使用的账户的用户名为: ${loginSuccessUserName } </br>  <!-- 显示用户信息   -->  --%>
36 
37     <!-- 2 上次登录时间 -->
38     <div>您上次登录时间为: ${logintime }</div> 
39     
40     <!-- 12 历史登录次数 -->
41     <div>您总共登录次数(算本次)为: ${loginNumber} </div>
42     
43     <!-- 从session中取出 -->
44     <div>您使用的账户的用户名为: ${loginUserName }</div>     
45     
46     <a href="<%=basePath%>/user/myProfile.action">我的资料</a>    <br>
47     <a href="<%=basePath%>user/homepage.action">进入主页面</a>    
48     
49     
50 </body>
51 </html>
LoginSuccess.jsp
复制代码
复制代码
  1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2 <%@ page trimDirectiveWhitespaces="true"%>
  3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4 <%@ taglib prefix="itheima" uri="http://itcast.cn/common/"%>
  5 <%
  6     String path = request.getContextPath();
  7     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
  8             + path + "/";
  9 %>
 10 <!DOCTYPE html>
 11 <html xmlns="http://www.w3.org/1999/xhtml">
 12 <head>
 13 <meta charset="utf-8">
 14 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 15 <meta name="viewport" content="width=device-width, initial-scale=1">
 16 <meta name="description" content="">
 17 <meta name="author" content="">
 18 <title>查看魔法卡和陷阱卡列表</title>
 19 <link href="<%=basePath%>css/bootstrap.min.css" rel="stylesheet">
 20 <link href="<%=basePath%>css/metisMenu.min.css" rel="stylesheet">
 21 <link href="<%=basePath%>css/dataTables.bootstrap.css" rel="stylesheet">
 22 <link href="<%=basePath%>css/sb-admin-2.css" rel="stylesheet">
 23 <link href="<%=basePath%>css/font-awesome.min.css" rel="stylesheet" type="text/css">
 24 <link href="<%=basePath%>css/boot-crm.css" rel="stylesheet" type="text/css">
 25 
 26 <script src="<%=basePath%>js/jquery.min.js"></script>
 27 <script src="<%=basePath%>js/bootstrap.min.js"></script>
 28 <script src="<%=basePath%>js/metisMenu.min.js"></script>
 29 <script src="<%=basePath%>js/jquery.dataTables.min.js"></script>
 30 <script src="<%=basePath%>js/dataTables.bootstrap.min.js"></script>
 31 <script src="<%=basePath%>js/sb-admin-2.js"></script>
 32 </head>
 33 <body>
 34     
 35     <jsp:include   page="head.jsp" flush="true"/>
 36     
 37 <div class="col-sm-10"> 
 38     <div  id="mainContent">
 39         
 40 <div class="panel panel-primary">
 41     <div class="panel-heading">
 42         <h3 class="panel-title">魔法卡和陷阱卡展示的页面</h3>
 43     </div>
 44     <div class="panel-body">    
 45 
 46     <!-- 22 魔陷卡组新增  -->
 47     <form class="form-inline" action="${pageContext.request.contextPath }/deck/magic_trapOption" method="post">
 48         <div class="form-group">
 49             <label for="province">种类</label>
 50             <select id="magic_trapOne" name="magic_trapOne" required>
 51                 <option>--请先选择--</option>
 52                 <option value="0">魔法卡</option>
 53                 <option value="1">陷阱卡</option>
 54             </select>
 55             <select id="magic_trapTwo" name="magic_trapTwo">
 56                 <option>--请再选择--</option>
 57 
 58             </select>
 59         </div>
 60         <button type="submit" class="btn btn-default">查询</button>
 61     </form>
 62     
 63 
 64 <form id="form2" action="${pageContext.request.contextPath }/deck/deletesMagicTrap" method="post">    
 65     
 66     <table class="table table-hover table-striped table-bordered">
 67         <thead>
 68             <tr>
 69 <th><input type="checkbox" onclick="checkBox()"  id="ids" name="ids" value="" form="form2"></th>
 70                 <th>卡片ID</th>
 71                 <th>卡片名称</th>
 72                 <th>卡片类型</th>
 73                 <th>搭配卡组</th>
 74                 <th>效果</th>
 75 <th>                 <!-- 31 魔陷卡添加-->    
 76     <button type="button" class="btn btn-primary btn-xs" data-toggle="modal" data-target="#magicTrapAdd">添加</button>
 77     <input type="submit" value="删除" form="form2" class="btn btn-danger btn-xs">
 78 </th>
 79             </tr>
 80         </thead>
 81         
 82         <tbody>        <!-- 使用分页查询后,由list改为了page.rows -->
 83             <c:forEach items="${magic_trapList}" var="list">
 84                 <tr>
 85                     <td>
 86                         <input type="checkbox" name="ids" value="${list.magicTrapId}">
 87                         <input type="hidden" name="deletesCardId" value="${list.cardType}">
 88                     </td>
 89                     <td>${list.magicTrapId}</td>
 90                     <td>${list.cardName}</td>
 91                     <td>${list.cardType}</td>
 92                     <td>${list.deckMatch}</td>
 93                     <td>${list.effect}</td>
 94 <td>        
 95     <%-- <button type="button" class="btn btn-primary btn-xs" 
 96         data-toggle="modal" data-target="#magicTrapUpdateModal" 
 97         onclick="showFormMagicTrap(${list.magicTrapId},${list.cardType})">修改</button> --%>
 98         
 99         <button type="button" class="btn btn-primary btn-xs" 
100         data-toggle="modal" data-target="#magicTrapUpdateModal" 
101         onclick="showFormMagicTrap('${list.magicTrapId}','${list.cardType}')">修改</button>
102 
103         <button type="button" class="btn btn-danger btn-xs"
104         onclick="ajaxDelMagicTrap('${list.magicTrapId}','${list.cardType}')">删除</button>                
105 </td>
106                 </tr>
107             </c:forEach>
108         </tbody>
109     </table>
110 </form>    <!-- 批量删除时用到的form -->    
111 
112 </div>
113 </div>
114 
115 
116 </div>
117 </div>
118 
119 <div class="modal fade" id="magicTrapAdd" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
120     <div class="modal-dialog">
121         <div class="modal-content">
122             <div class="modal-header">
123                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
124                     &times;
125                 </button>
126                 <h4 class="modal-title" id="myModalLabel">
127                     添加魔陷卡
128                 </h4>
129             </div>
130             
131 <div class="modal-body">
132 <!-- 【添加】 模态框中的表单form -->        
133 <form class="form-horizontal" id="modaladdMagic_trap">
134         <div>
135             <label>卡片ID:</label>
136             <input type="text" id="magicTrapId" name="magicTrapId" autocomplete="off">
137         </div>
138         <div>
139             <label>卡片名称:</label>
140             <input type="text" id="cardName" name="cardName" autocomplete="off">
141         </div>
142         <div>
143             <label>卡片类型: </label>
144             <select id="cardType" name="cardType" required>
145                 <option>--请选择--</option>
146                 <option value="场地魔法卡">场地魔法卡</option>
147                 <option value="普通魔法卡">普通魔法卡</option>
148                 <option value="普通陷阱卡">普通陷阱卡</option>
149                 <option value="反击陷阱卡">反击陷阱卡</option>
150             </select>
151         </div>
152         <div>
153             <label>搭配卡组:</label>
154             <input type="text" id="deckMatch" name="deckMatch" autocomplete="off">
155         </div>
156         <div>
157             <label>效果:</label>
158             <input type="text" id="effect" name="effect" autocomplete="off"> 
159         </div>
160 </form>                
161 </div>
162             <div class="modal-footer">
163                 <button type="button" class="btn btn-primary" onclick="modalAddMagic_trap()">添加</button>
164                 <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
165             </div>
166         </div>    
167     </div>    
168 </div>    <!-- 【添加】 模态框的结束div,包含form -->
169 
170 <!-- 魔陷的模态框修改  -->
171 <div class="modal fade" id="magicTrapUpdateModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel2" aria-hidden="true">
172     <div class="modal-dialog">
173         <div class="modal-content">
174             <div class="modal-header">
175                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
176                     &times;
177                 </button>
178                 <h4 class="modal-title" id="myModalLabel2">
179                     修改魔陷卡
180                 </h4>
181             </div>
182             <div class="modal-body">
183 
184 <!-- 【修改】 模态框中的表单form -->
185     <form class="form-horizontal" id="modalUpdate_formMagicTrap">
186         <div>
187             <label>卡片ID:</label>
188             <input type="text" id="magicTrapId2" name="magicTrapId"  readonly="readonly">
189             目前禁止修改
190         </div>
191         <div>
192             <label>卡片名称:</label>
193             <input type="text" id="cardName2" name="cardName" autocomplete="off">
194         </div>
195         <div>
196             <label>卡片类型: </label>
197             <input type="text" id="cardType2" name="cardType" autocomplete="off">
198         </div>
199         <div>
200             <label>搭配卡组:</label>
201             <input type="text" id="deckMatch2" name="deckMatch" autocomplete="off">
202         </div>
203         <div>
204             <label>效果:</label>
205             <input type="text" id="effect2" name="effect" autocomplete="off"> 
206         </div>
207     </form>                
208         </div>    
209             <div class="modal-footer">
210                 <button type="button" class="btn btn-primary" onclick="modalUpdateSubmitMagicTrap()">修改</button>
211                 <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
212             </div>
213         </div>
214     </div>
215 </div>        <!--【修改】 的结束div -->
216 
217 
218 <script type="text/javascript">
219         
220         $(function(){        // 17 卡组联动
221             var cities = new Array(2);
222             cities[0] = new Array("场地魔法卡","普通魔法卡");
223             cities[1] = new Array("普通陷阱卡","反击陷阱卡");
224             
225             $("#magic_trapOne").change(function(){
226                 $("#magic_trapTwo").empty();
227                 
228                 var val = this.value;
229                 $.each(cities,function(i,n){
230                     if(val==i){
231                         $.each(cities[i], function(j,m) {
232                             var textNode = document.createTextNode(m);
233                             var opEle = document.createElement("option");
234                             $(opEle).append(textNode);
235                             $(opEle).appendTo($("#magic_trapTwo"));
236                         });
237                     }
238                 });
239                 
240             });
241         });
242         
243         function modalAddMagic_trap() {            // 31添加  添加功能的模态框调用
244             $.ajax({        
245                 type:"POST",
246                 url:"<%=basePath%>deck/addMagic_trap",
247                 data:$("#modaladdMagic_trap").serialize(),        // 添加的模态框中的form的id
248                 success:function() {
249                     alert("添加魔陷卡成功");
250                     $("#magicTrapAdd").modal("hide");        // 通过模态框的id,隐藏模态框 
251                     $(".modal-backdrop").remove();            // 去除,模态框添加后,灰屏
252                     history.go(0);                            // 去灰屏后,无法打开模态框,so刷新
253                 }
254             });
255         }
256         
257         // 32 显示查询  打开模态框时显示"准备修改的内容" 
258         function showFormMagicTrap(magicTrapId,cardType) {    
259 //             alert("可以");
260 //             alert(magicTrapId);
261 //             alert(cardType);
262                 
263             $.ajax({
264                 type:"POST",
265                 url:"<%=basePath%>deck/showFormMagicTrap",
266                 data:{"magicTrapId":magicTrapId, "cardType":cardType},
267                 success:function(data) {                              // 返回通过bookTitle查询    
268                     $("#magicTrapId2").val(data.magicTrapId);        // 将返回的数据,设置给form    
269                     $("#cardName2").val(data.cardName);                        
270                     $("#cardType2").val(data.cardType);            
271                     $("#deckMatch2").val(data.deckMatch);
272                     $("#effect2").val(data.effect);
273                 },
274                 dataType:"json"
275             });
276         }
277 
278         function modalUpdateSubmitMagicTrap() {     // 32修改 将从修改的模太框中的表单获得的数据提交
279             $.ajax({        
280                 type:"POST",    
281                 url:"<%=basePath%>deck/modalUpdateSubmitMagicTrap",
282                 data:$("#modalUpdate_formMagicTrap").serialize(),    // 获得修改的模态框中的表单
283                 success:function() {                        
284                     alert("修改魔陷卡信息并提交成功");                
285                     $("#magicTrapUpdateModal").modal("hide");    
286                     $(".modal-backdrop").remove();        // 去除,模态框修改数据后,灰屏
287                     history.go(0);                        // 去除灰屏后,无法打开模态框,so刷新一下
288                 }                                            
289             });  
290         }
291         
292         function ajaxDelMagicTrap(magicTrapId,cardType) {    // 34单次删除 使用AJAX提交id到服务器
293             $.ajax({
294                 type:"POST",
295                 url:"<%=basePath%>deck/deleteMagicTrap",
296                 data:{"magicTrapId":magicTrapId, "cardType":cardType},        // 准备接收的是id
297                 success:function() {                                  
298                     alert("删除成功");
299                     history.go(0);
300                 }
301             });
302         }
303         
304         function checkBox(){    // 35 全选 当全选的复选框勾选时,设置主体中的复选框的值为勾选,为false。                    
305             var checkAllEle = document.getElementById("ids");    
306             if(checkAllEle.checked==true){         
307                 var checkOnes = document.getElementsByName("ids");
308                 for(var i=0;i<checkOnes.length;i++){
309                     checkOnes[i].checked=true;
310                 }
311             }else{        // 否则,即全不选,主体中的复选框的值什么都不传,并不是false。
312                 var checkOnes = document.getElementsByName("ids");
313                 for(var i=0;i<checkOnes.length;i++){
314                     checkOnes[i].checked=false;        // 由于手动设置为false,最终才为false
315                 }
316             }
317         } 
318         
319 </script>
320 
321 </body>
322 </html>
magic_trapDeck.jsp
复制代码
复制代码
  1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2 <%@ page trimDirectiveWhitespaces="true"%>
  3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4 <%
  5     String path = request.getContextPath();
  6     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
  7             + path + "/";
  8 %>
  9 <!DOCTYPE html>
 10 <html>
 11 <head>
 12 <meta charset="utf-8">
 13 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 14 <meta name="viewport" content="width=device-width, initial-scale=1">
 15 <meta name="description" content="">
 16 <meta name="author" content="">
 17 <title>我的资料</title>
 18 <link href="<%=basePath%>css/bootstrap.min.css" rel="stylesheet">
 19 <link href="<%=basePath%>css/metisMenu.min.css" rel="stylesheet">
 20 <link href="<%=basePath%>css/dataTables.bootstrap.css" rel="stylesheet">
 21 <link href="<%=basePath%>css/sb-admin-2.css" rel="stylesheet">
 22 <link href="<%=basePath%>css/font-awesome.min.css" rel="stylesheet" type="text/css">
 23 <link href="<%=basePath%>css/boot-crm.css" rel="stylesheet" type="text/css">
 24 
 25 <script src="<%=basePath%>js/jquery.min.js"></script>
 26 <script src="<%=basePath%>js/bootstrap.min.js"></script>
 27 <script src="<%=basePath%>js/metisMenu.min.js"></script>
 28 <script src="<%=basePath%>js/jquery.dataTables.min.js"></script>
 29 <script src="<%=basePath%>js/dataTables.bootstrap.min.js"></script>
 30 <script src="<%=basePath%>js/sb-admin-2.js"></script>
 31 </head>
 32 <body>
 33     
 34     <a href="<%=basePath%>user/homepage.action" >进入主页面</a>    <br>
 35     
 36     <%-- ${loginUserName }  (目前用户名设置为不可以修改)  </br> --%>
 37     <%-- 2 我的名称是:${myProfileUser.getName() } --%>
 38     
 39     <!-- 28 修改我的资料  -->
 40     <form action="<%=basePath%>user/updateMyProfile.action" method="post">
 41         <div>
 42             <label>用户名:</label> 
 43             <!-- 禁止修改输入框中的数值,因为用户名要保证唯一性,方便查询数据表 -->
 44             <!-- 这里禁用修改,form也就不会提交,controller也就接收不到了 disabled="disabled"  -->
 45              <input type="text" value="${loginUserName }"  name="loginUserName">
 46         </div>
 47              
 48         <div>
 49             <!-- 如果newUpdate不为空,则显示,否则显示 -->
 50              <!-- ${not empty cookie.remembermeCookie? "checked='checked'" : ""} -->
 51               <label>名称:</label>
 52             <%-- <input type="text" value="${myProfileUser.getName() }" name="myProfileName" > --%>
 53               <input type="text" value="${empty newUpdate?myProfileUser.getName() : newUpdate }" 
 54                       name="myProfileName" >
 55         </div>
 56          
 57          <div>
 58              <label>个性签名</label>    
 59              <input type="text" value="${newMy }" name="my">
 60          </div>
 61          
 62          <!-- 18 长文本框 个人信息,最多20字 -->
 63          <div>
 64              <label>用户信息</label>
 65                  <textarea name="userInfo" maxlength="20" 
 66                      placeholder="请在此输入,最多20字">${newUserInfo }</textarea> 
 67          </div>
 68          
 69         <div>
 70             <input type="submit" class="btn btn-default" value="修改" >    
 71             <input type="reset" class="btn btn-default" value="重置">
 72         </div>
 73     </form>
 74     
 75     <!-- 8 设置密保问题 -->
 76     <br>
 77     <div> 设置密保问题,修改密码</div>
 78     <form action="<%=basePath%>/user/securityQuestion.action" method="post">
 79         <div>当前账户的用户名为: ${loginUserName }</div>
 80         
 81         <div>
 82             <label>用户名: </label>
 83             <input type="text" name="username" 
 84                 value="${loginUserName }" readonly="true">
 85         </div>
 86         <div>
 87             <label>密保问题1: 最喜欢的颜色 </label>
 88             <input type="text" name="securityQuestion1" >
 89         </div>
 90         <div>
 91             <label>密保问题2: 最喜欢的事情 </label>
 92             <input type="text" name="securityQuestion2" >
 93         </div>
 94         <div>
 95             <label>密保问题3: 最喜欢的游戏</label>
 96             <input type="text" name="securityQuestion3" >
 97         </div>
 98         
 99         <div>
100             <input type="submit" class="btn btn-default" value="修改" >    
101             <input type="reset" class="btn btn-default" value="重置">
102         </div>
103     </form>
104     
105     <br>
106     <!-- 使用修改功能时,要注意,目前已经使用了 事务管理
107     如果两次输入的密码,错误(哪怕错一次),也是修改不成功的
108     目前没有想出办法,怎么在这里获得用户名(主键),所以使用是模拟的用户名 1 -->
109 
110     <form action="<%=basePath%>user/UpdatePassword.action" method="post">
111         <div>使用事务,修改密码</div>    
112         <!-- 4-2 获得当前的用户名 -->
113         <div>当前账户的用户名为: ${loginUserName }</div>
114         
115         <div>
116             <label>用户名: </label>
117             <input type="text" name="usernameUpdatePassword" 
118                 value="${loginUserName }" readonly="true">
119         </div>
120 
121         <div>
122             <label>第一次输入密码: </label>
123             <input type="password" name="password1" >
124         </div>
125         
126         <div>
127             <label>第二次输入密码: </label>
128             <input type="password" name="password2" >
129         </div>
130         
131         <div>
132             <label>想要修改的密码: </label>
133             <input type="password" name="updatePassword" >
134         </div>
135     
136         <div>
137             <input type="submit" class="btn btn-default" value="修改" >    
138             <input type="reset" class="btn btn-default" value="重置">
139         </div>
140     </form>
141     
142     <br>
143     
144 </body>
145 </html>
myProfile.jsp
复制代码
复制代码
  1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2 <%@ page trimDirectiveWhitespaces="true"%>
  3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4 <%
  5     String path = request.getContextPath();
  6     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
  7             + path + "/";
  8 %>
  9 <!DOCTYPE html>
 10 <html>
 11 <head>
 12 <meta charset="utf-8">
 13 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 14 <meta name="viewport" content="width=device-width, initial-scale=1">
 15 <meta name="description" content="">
 16 <meta name="author" content="">
 17 <title>图片</title>
 18 <link href="<%=basePath%>css/bootstrap.min.css" rel="stylesheet">
 19 <link href="<%=basePath%>css/metisMenu.min.css" rel="stylesheet">
 20 <link href="<%=basePath%>css/dataTables.bootstrap.css" rel="stylesheet">
 21 <link href="<%=basePath%>css/sb-admin-2.css" rel="stylesheet">
 22 <link href="<%=basePath%>css/font-awesome.min.css" rel="stylesheet" type="text/css">
 23 <link href="<%=basePath%>css/boot-crm.css" rel="stylesheet" type="text/css">
 24 
 25 <script src="<%=basePath%>js/jquery.min.js"></script>
 26 <script src="<%=basePath%>js/bootstrap.min.js"></script>
 27 <script src="<%=basePath%>js/metisMenu.min.js"></script>
 28 <script src="<%=basePath%>js/jquery.dataTables.min.js"></script>
 29 <script src="<%=basePath%>js/dataTables.bootstrap.min.js"></script>
 30 <script src="<%=basePath%>js/sb-admin-2.js"></script>
 31 </head>
 32 <body>
 33     <jsp:include   page="head.jsp" flush="true"/>
 34     
 35     <div class="col-sm-10"> 
 36     <div  id="mainContent">    
 37     
 38 <div class="panel panel-info">
 39     <div class="panel-heading">
 40         <h3 class="panel-title">图片页面</h3>
 41     </div>
 42     <div class="panel-body">
 43     
 44     
 45         显示图片 <br>
 46         <a href="#"> 
 47             <img src="${pageContext.request.contextPath}/img/1.jpg" 
 48                 width="144" height="108"/>
 49         </a>
 50     
 51     <br>
 52     <br>
 53     
 54     <!-- 上传图片是需要指定form的属性 enctype="multipart/form-data" -->
 55     <!-- <form id="itemForm" action="" method="post" enctype="multipart/form-data"> -->
 56     <!-- src="/pic/1.jpg"可以直接显示本地的图片-->
 57     <form id="itemForm"    action="<%=basePath%>/picture/picture2" method="post" enctype="multipart/form-data">
 58         <table width="100%" border=1>
 59             <tr>
 60                 <td> 
 61                     <c:if test="${picName == null}">准备上传图片</c:if>
 62                     <c:if test="${picName != null}">预览(点击左侧图片菜单,重新进入后,可查看图片列表)</c:if>
 63                 </td>
 64                 <td>
 65                     <c:if test="${picName !=null}">
 66                         <img src="/pic/${picName}" width=100 height=100/>
 67                         <br/>
 68                     </c:if>
 69                     <input type="file"  name="pictureFile"/> 
 70                 </td>
 71             </tr>
 72             
 73             <tr>
 74                 <td><input type="submit" value="上传图片" /> </td>
 75             </tr>
 76         </table>
 77 
 78     </form>
 79     
 80     
 81     <table width="100%" class="table table-hover table-striped table-bordered"> 
 82         <thead>        
 83             <tr>    
 84                 <th>图片</th>
 85             </tr>     
 86         </thead>     
 87              
 88         <tbody>        
 89           <tr>    
 90             <c:forEach items="${pictureList }" var="list">        
 91               <tr>         
 92                 <td>
 93                     <img src="/pic/${list.picName} " width=100 height=100/>
 94                 </td>
 95               </tr>
 96             </c:forEach>
 97           </tr>        
 98         </tbody>        
 99      </table>
100     
101     </div>    <!-- 左侧导航栏2,右侧侧内容10的结束div -->
102 
103 </div>
104 </div>
105 </div>
106 
107 </body>
108 </html>
picture.jsp
复制代码
复制代码
  1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2 <%@ page trimDirectiveWhitespaces="true"%>
  3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4 <%
  5     String path = request.getContextPath();
  6     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
  7             + path + "/";
  8 %>
  9 <!DOCTYPE html>
 10 <html>
 11 <head>
 12 <meta charset="utf-8">
 13 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 14 <meta name="viewport" content="width=device-width, initial-scale=1">
 15 <meta name="description" content="">
 16 <meta name="author" content="">
 17 <title>注册的页面</title>
 18 <link href="<%=basePath%>css/bootstrap.min.css" rel="stylesheet">
 19 <link href="<%=basePath%>css/metisMenu.min.css" rel="stylesheet">
 20 <link href="<%=basePath%>css/dataTables.bootstrap.css" rel="stylesheet">
 21 <link href="<%=basePath%>css/sb-admin-2.css" rel="stylesheet">
 22 <link href="<%=basePath%>css/font-awesome.min.css" rel="stylesheet" type="text/css">
 23 <link href="<%=basePath%>css/boot-crm.css" rel="stylesheet" type="text/css">
 24 
 25 <script src="<%=basePath%>js/jquery-1.8.3.js"></script>
 26 
 27 <script src="<%=basePath%>js/jquery.min.js"></script>
 28 <script src="<%=basePath%>js/bootstrap.min.js"></script>
 29 <script src="<%=basePath%>js/metisMenu.min.js"></script>
 30 <script src="<%=basePath%>js/jquery.dataTables.min.js"></script>
 31 <script src="<%=basePath%>js/dataTables.bootstrap.min.js"></script>
 32 <script src="<%=basePath%>js/sb-admin-2.js"></script>
 33     
 34 <script src="<%=basePath%>js/jquery.validate.min.js"></script>
 35 <script src="<%=basePath%>js/messages_zh.js"></script>
 36 <script src="<%=basePath%>js/demo1.js"></script>
 37 </head>
 38 <body>
 39 
 40     <!-- 6 用户登录失败,提示信息 loginFailure 这里的失败,实际上就是db中查询不到有这个对象 -->
 41     <!-- ${loginFailure } == 用户登录失败,请注册 -->
 42     <div>
 43         <!--当提示信息不为空时,才进行提示-->                      
 44         <c:if test="${!empty loginFailure }">        
 45             <font color="red" size="5" >${loginFailure }</font>
 46         </c:if>
 47     </div>
 48 
 49     <!-- 11【用户注册】 -->
 50     <form id="registerForm" action="${pageContext.request.contextPath }/user/register.action" method="post" >    
 51         <div>
 52             <label>用户名</label>
 53             <input id="username" type="text" name="username">
 54             <span id="usernameInfo"></span>        <!-- 【异步校验-注册用户名】  --> 
 55         </div>
 56                         
 57         <div>
 58             <label>密码</label>
 59             <input id="password1" type="password" name="password">
 60         </div>
 61                         
 62         <div>
 63             <label>确认密码</label>
 64             <input id="password2" type="password" name="password2" onkeyup="validate()">
 65             <span id="passwordVerify"></span>        <!-- 19 【密码不同】 提示信息 -->
 66         </div>
 67         
 68         <div>    <!-- 53 【完善表单】 新增邮箱、姓名、性别、出生日期。让注册时填写的信息更全面。 -->    
 69             <label>Email</label>
 70             <input type="text" name="email" id="email">
 71         </div>
 72         
 73         <div>    
 74             <label>姓名</label>
 75             <input type="text" name="name">
 76         </div>
 77     
 78         <!-- 1 省市联动 -->
 79         <div class="form-group">
 80             <label for="province">籍贯</label>
 81                 <select id="province" name="provinces">
 82                 <option>--请选择--</option>
 83                 <option value="0">河北省</option>
 84                 <option value="1">四川省</option>
 85                 <option value="2">广东省</option>
 86                 <option value="3">江西省</option>
 87             </select>
 88             <select id="city" name="provinceCity">
 89                 <!-- <option value="0"></option>
 90                      <option value="1"></option>
 91                      <option value="2"></option> -->
 92             </select>
 93         </div>
 94         
 95         
 96         <div>
 97             <label>性别</label>
 98             <input type="radio" name="sex" value="男"/> 99             <input type="radio" name="sex" value="女"/>100             <label for="sex" style="display: none;"></label>    <!-- class="error"作用是? -->
101         </div>
102         
103         <div>
104             <label>出生日期</label>
105             <input type="text" name="birthday">
106         </div>
107         
108         <div>
109             <input type="submit" class="btn btn-default" value="注册" name="submit" >
110             <input type="reset" class="btn btn-default" value="重置">
111         </div>
112         
113 </form>
114 
115 <%--     <script src="<%=basePath%>js/jquery-1.8.3.js"></script>
116 
117     <script src="<%=basePath%>js/jquery.min.js"></script>
118     <script src="<%=basePath%>js/bootstrap.min.js"></script>
119     <script src="<%=basePath%>js/metisMenu.min.js"></script>
120     <script src="<%=basePath%>js/jquery.dataTables.min.js"></script>
121     <script src="<%=basePath%>js/dataTables.bootstrap.min.js"></script>
122     <script src="<%=basePath%>js/sb-admin-2.js"></script>
123     
124     <script src="<%=basePath%>js/jquery.validate.min.js"></script>
125     <script src="<%=basePath%>js/messages_zh.js"></script>
126     <script src="<%=basePath%>js/demo1.js"></script> --%>
127     
128 <!-- <script src="js/jquery-1.11.3.min.js"></script> -->
129 <!-- 54 【表单校验】 引入的文件,共3个。在填写注册的表单时,填写错误时会有提示。防止填写错误的格式 -->
130 <!-- <script type="text/javascript" src="js/jquery-1.8.3.js"></script> -->
131 <!-- validate.js是建立在jquery之上的,所以得先导入jquery的类库-->
132 <!-- <script type="text/javascript" src="js/jquery.validate.min.js"></script> -->
133 <!-- 引入国际化js文件-->
134 <!-- <script type="text/javascript" src="js/messages_zh.js"></script> -->
135 <!-- 引入自定义的js文件 -->
136 <!-- <script src="js/demo1.js"></script> -->
137 
138 <script type="text/javascript">     
139 
140     $(function(){        
141         $("#registerForm").validate({                // 54 【表单校验】      
142             rules:{                                    // 规则
143                 username:{
144                     required:true,                    // 必须
145                     minlength:2                        // 最小2位
146                 },
147                 password:{
148                     required:true,                    // 必须    
149                     digits:true,                    // 数字
150                     minlength:1                        // 最小1位
151                 },
152                 // password2                        // 不能为空    
153                 password2:{
154                     required:true,                    // 必须    
155                 },
156                 email:{                                // 邮箱格式
157                     required:false,
158                     email:true
159                 },
160                 name:{                                // 姓名
161                     required:true,
162                     maxlength:12
163                 },
164                 sex:{                                // 性别
165                     required:true
166                 },
167                 birthday:{                            // 请输入有效的日期    新增 
168                     required:true,                    // 必须
169                     date:true
170                 }
171             },
172             messages:{                                // 消息
173                 username:{
174                     required:"用户名不能为空!",
175                     minlength:"用户名不得少于2位!"
176                 },
177                 password:{
178                     required:"密码不能为空!",
179                     digits:"密码必须是整数!",
180                     minlength:"密码不得少于1位!"
181                 },
182                 password2:{
183                     required:"密码不能为空!",
184                 },
185                 email:{
186                     required:"邮箱不能为空!",
187                     email:"邮箱格式不正确!"
188                 },
189                 name:{        
190                     required:"姓名不能为空!",
191                     maxlength:"姓名不得多于12位!"
192                 },
193                 sex:{
194                     required:"性别必须勾选!"
195                 },
196                 birthday:{
197                     required:"日期必须存在,日期格式(YYYY-MM-DD)",
198                     date:"请输入有效的日期,日期格式(YYYY-MM-DD)"        //不写这一行,则为:请输入有效的日期
199                 }
200             }
201         });
202     });        // 54 【表单校验】 的函数的结束括号
203 
204 
205     $(function(){    
206         $("#username").blur(function(){                    // 【异步校验-注册用户名】    
207             var usernameInput = $(this).val();
208             $.post(
209                 "<%=basePath%>user/ajaxUserName.action",
210                 {"username":usernameInput},
211                 function(data){                            // 服务器返回的json格式的数据
212                     var isExist = data.isExist;            
213 //                     alert(isExist);                        // resultMap这种方式的测试
214                     
215                     var usernameInfo = "";
216                     if(isExist){          
217                         usernameInfo = "该用户名已经存在";
218                         $("#usernameInfo").css("color","red");
219                     }else{                
220                         usernameInfo = "该用户名不存在,当符合校验规则时,可以使用√"
221                         $("#usernameInfo").css("color","green");
222                     }
223                     $("#usernameInfo").html(usernameInfo);    
224                 },
225                 "json"
226             );    //pose方法的结束括号
227         });    // 获取username的值的方法的结束括号
228     });    // 【异步校验-注册用户名】的结束括号
229     
230     
231     // 【密码不同】 用户注册时,在表单中填写的两次密码,对两次的值进行判断,并提示相关信息
232     // 获得两次输入的值、进行判断、根据结果显示相关的信息。不一样时,禁用使用注册按钮。
233     function validate() {
234         var password1 = document.getElementById("password1").value;
235         var password2 = document.getElementById("password2").value;
236         if(password1 == password2) {
237             document.getElementById("passwordVerify").innerHTML="<font color='green'>两次密码相同</font>";
238             document.getElementById("submit").disabled = false;     
239             //disabled 禁用submit元素,由于设置的是false,即不能点击注册按钮
240         }
241         else {
242             document.getElementById("passwordVerify").innerHTML="<font color='red'>两次密码不相同</font>";
243             document.getElementById("submit").disabled = true;
244             //disable 禁用submit元素,由于设置的是true,所以可以使用。
245         }
246     }
247     
248             /* 省市联动 */
249             $(function(){
250                 var cities = new Array(1);
251                 cities[0] = new Array("河北省","石家庄市","唐山市","沧州市");
252                 cities[1] = new Array("四川省","成都市","乐山市","雅安市");
253                 cities[2] = new Array("广州省","汕头市","深圳市","潮州市");
254                 cities[3] = new Array("江西省","南昌市","九江市","赣州市");
255                 
256                 $("#province").change(function(){
257                     $("#city").empty();
258                     
259                     var val = this.value;
260                     $.each(cities,function(i,n){
261                         if(val==i){
262                             $.each(cities[i], function(j,m) {
263                                 var textNode = document.createTextNode(m);
264                                 var opEle = document.createElement("option");
265                                 $(opEle).append(textNode);
266                                 $(opEle).appendTo($("#city"));
267                             });
268                         }
269                     });
270                     
271                 });
272             });
273     
274 </script>    
275     
276 
277 </body>
278 </html>
register.jsp
复制代码
复制代码
 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 2 <%@ page trimDirectiveWhitespaces="true"%>
 3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 4 <%
 5     String path = request.getContextPath();
 6     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
 7             + path + "/";
 8 %>
 9 <!DOCTYPE html>
10 <html>
11 <head>
12 <meta charset="utf-8">
13 <meta http-equiv="X-UA-Compatible" content="IE=edge">
14 <meta name="viewport" content="width=device-width, initial-scale=1">
15 <meta name="description" content="">
16 <meta name="author" content="">
17 <title>忘记密码时,重新设置密码的页面</title>
18 <link href="<%=basePath%>css/bootstrap.min.css" rel="stylesheet">
19 <link href="<%=basePath%>css/metisMenu.min.css" rel="stylesheet">
20 <link href="<%=basePath%>css/dataTables.bootstrap.css" rel="stylesheet">
21 <link href="<%=basePath%>css/sb-admin-2.css" rel="stylesheet">
22 <link href="<%=basePath%>css/font-awesome.min.css" rel="stylesheet" type="text/css">
23 <link href="<%=basePath%>css/boot-crm.css" rel="stylesheet" type="text/css">
24 
25 <script src="<%=basePath%>js/jquery.min.js"></script>
26 <script src="<%=basePath%>js/bootstrap.min.js"></script>
27 <script src="<%=basePath%>js/metisMenu.min.js"></script>
28 <script src="<%=basePath%>js/jquery.dataTables.min.js"></script>
29 <script src="<%=basePath%>js/dataTables.bootstrap.min.js"></script>
30 <script src="<%=basePath%>js/sb-admin-2.js"></script>
31 </head>
32 <body>
33 
34     <div> 输入用户名,验证3个密保问题,然后可以修改密码</div>
35     <form action="<%=basePath%>/user/toSQ.action" method="post">
36         <div>
37             <label>用户名: </label>
38             <input type="text" name="username">
39         </div>
40         <div>
41             <label>密保问题1: 最喜欢的颜色 </label>
42             <input type="text" name="securityQuestion1" >
43         </div>
44         <div>
45             <label>密保问题2: 最喜欢的事情 </label>
46             <input type="text" name="securityQuestion2" >
47         </div>
48         <div>
49             <label>密保问题3: 最喜欢的游戏</label>
50             <input type="text" name="securityQuestion3" >
51         </div>
52         
53         <div>
54             <input type="submit" class="btn btn-default" value="验证" >    
55             <input type="reset" class="btn btn-default" value="重置">
56         </div>
57     </form>
58     
59     
60 </body>
61 </html>
重置密码
复制代码
复制代码
 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 2 <%@ page trimDirectiveWhitespaces="true"%>
 3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 4 <%
 5     String path = request.getContextPath();
 6     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
 7             + path + "/";
 8 %>
 9 <!DOCTYPE html>
10 <html>
11 <head>
12 <meta charset="utf-8">
13 <meta http-equiv="X-UA-Compatible" content="IE=edge">
14 <meta name="viewport" content="width=device-width, initial-scale=1">
15 <meta name="description" content="">
16 <meta name="author" content="">
17 <title>通过密保问题验证后,修改密码的页面</title>
18 <link href="<%=basePath%>css/bootstrap.min.css" rel="stylesheet">
19 <link href="<%=basePath%>css/metisMenu.min.css" rel="stylesheet">
20 <link href="<%=basePath%>css/dataTables.bootstrap.css" rel="stylesheet">
21 <link href="<%=basePath%>css/sb-admin-2.css" rel="stylesheet">
22 <link href="<%=basePath%>css/font-awesome.min.css" rel="stylesheet" type="text/css">
23 <link href="<%=basePath%>css/boot-crm.css" rel="stylesheet" type="text/css">
24 
25 <script src="<%=basePath%>js/jquery.min.js"></script>
26 <script src="<%=basePath%>js/bootstrap.min.js"></script>
27 <script src="<%=basePath%>js/metisMenu.min.js"></script>
28 <script src="<%=basePath%>js/jquery.dataTables.min.js"></script>
29 <script src="<%=basePath%>js/dataTables.bootstrap.min.js"></script>
30 <script src="<%=basePath%>js/sb-admin-2.js"></script>
31 </head>
32 <body>
33     
34     <!-- 在通过密保问题验证后,需要重新设置密码 -->
35     <form action="<%=basePath%>user/sQUpdatePassword.action" method="post">
36         <div>
37             <label>用户名: </label>
38             <input type="text" value="${sQusername} " 
39                 name="sQusername" readonly="true">
40         </div>
41         
42         <div>
43             <label>想要修改的密码:</label>
44             <input type="password" name="sQupdatePassword" >
45         </div>
46         <div>
47             修改成功后,会自动进入登录页面
48         </div>
49         <div>
50             <input type="submit" class="btn btn-default" value="修改" >    
51             <input type="reset" class="btn btn-default" value="重置">
52         </div>
53     </form>
54 </body>
55 </html>
密保问题sqPassword
复制代码
复制代码
  1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2 <%@ page trimDirectiveWhitespaces="true"%>
  3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4 <%@ taglib prefix="itheima" uri="http://itcast.cn/common/"%>
  5 <%
  6     String path = request.getContextPath();
  7     String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
  8             + path + "/";
  9 %>
 10 <!DOCTYPE html>
 11 <html xmlns="http://www.w3.org/1999/xhtml">
 12 <head>
 13 <meta charset="utf-8">
 14 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 15 <meta name="viewport" content="width=device-width, initial-scale=1">
 16 <meta name="description" content="">
 17 <meta name="author" content="">
 18 <title>测试SSM项目专用的页面</title>
 19 <link href="<%=basePath%>css/bootstrap.min.css" rel="stylesheet">
 20 <link href="<%=basePath%>css/metisMenu.min.css" rel="stylesheet">
 21 <link href="<%=basePath%>css/dataTables.bootstrap.css" rel="stylesheet">
 22 <link href="<%=basePath%>css/sb-admin-2.css" rel="stylesheet">
 23 <link href="<%=basePath%>css/font-awesome.min.css" rel="stylesheet" type="text/css">
 24 <link href="<%=basePath%>css/boot-crm.css" rel="stylesheet" type="text/css">
 25 
 26 <script src="<%=basePath%>js/jquery.min.js"></script>
 27 <script src="<%=basePath%>js/bootstrap.min.js"></script>
 28 <script src="<%=basePath%>js/metisMenu.min.js"></script>
 29 <script src="<%=basePath%>js/jquery.dataTables.min.js"></script>
 30 <script src="<%=basePath%>js/dataTables.bootstrap.min.js"></script>
 31 <script src="<%=basePath%>js/sb-admin-2.js"></script>
 32 
 33 </head>
 34 <body>
 35 
 36 <ol>
 37     <li>
 38         <a href="${pageContext.request.contextPath }/test/session">获取session中的值</a>
 39     </li>
 40     <li>
 41         <a href="${pageContext.request.contextPath }/test/getSession">获取session中的值,映射多请求</a>
 42     </li>
 43     <li>
 44         <a href="${pageContext.request.contextPath }/test/params/626">只提交数值,@PathVariable</a>
 45     </li>
 46     <li>
 47         <a href="${pageContext.request.contextPath }/test/requestParam.html?name=shanhai">
 48         提交名称+数值,@RequestParam</a>
 49     </li>
 50     <li>
 51         <button class="btn btn-primary btn-xs" onclick="requestBody48()">@RequestBody</button>
 52     </li>
 53     <li>
 54         <input type="button" onclick="requestBody49()" value="测试49,传list到c层">
 55     </li>
 56     <li>
 57         <input type="button" onclick="requestBody50()" value="测试50,c层传java对象到ajax">
 58     </li>
 59     <li>
 60         <input type="button" onclick="requestBody51()" value="测试51,c层传list到ajax">
 61     </li>
 62     <li>
 63         <input type="button" onclick="requestBody52()" value="测试52,ajax传对象+list">
 64     </li>
 65     <li>
 66         <input type="button" onclick="requestBody53()" value="测试53,ajax注释">
 67     </li>
 68 </ol>
 69 
 70 <script type="text/javascript">
 71 
 72         function requestBody53() {                                // 写好注释 
 73             var saveDataAry=[];                                  // 声明一个js数组,用来保存数据 
 74             var data1={"userName":"山海","passWord":"123"};     // 声明一个对象,准备存入数组中
 75             var data2={"userName":"大地","passWord":"456"};
 76             var data3={"userName":"海洋","passWord":"789","name":"海"};   
 77 //             var data4={"userName":"海洋","Test54":{[test54{"10", "11"},{"20", "21"}]}};   
 78             saveDataAry.push(data1);                              // 向数组存入对象     
 79             saveDataAry.push(data2);
 80             saveDataAry.push(data3);                            // 新增对象3,且对象3新增属性
 81 //             saveDataAry.push(data4);                            // 新增对象4,且对象3新增数组 
 82             
 83             $.ajax({                                             
 84                 type:"POST",                                 // 必须POST,因为get无请求体 
 85                 url:"<%=basePath%>test/Test53", 
 86                 dataType:"json",                              // 设置收到fu数据的格式
 87                 contentType:"application/json",             // 设置发送给fu数据的格式
 88                 data:JSON.stringify(saveDataAry),             // 将js值转为json字符串
 89                 success:function(data){                     // 接收c层传递的java对象
 90 //                     alert("c层传递java对象到ajax");    
 91 //                     alert(data);                            // 直接data则会[object Object]
 92                     $.each(data,function(k,v){                // 遍历收到的对象中的属性 
 93                          alert(k +":"+ v);                        
 94                         });
 95                 }
 96              }); 
 97         }
 98         
 99 
100 
101         function requestBody52() {
102             $.ajax({ 
103                 type:"POST", 
104                 url:"<%=basePath%>test/requestBodyTest52.action", 
105                 dataType:"json",      
106                 contentType:"application/json",               
107                 data:{id:1,
108                     address:[{
109                                 name:'贵州',
110                                 areaCode:'564432'
111                             },
112                             {
113                                 name:'西安',
114                                 areaCode:'512344'
115                             }],
116                 },
117                 success:function(data){ 
118                     alert("成功");                   
119                 }
120              }); 
121         }
122 
123 
124         function requestBody51() {        // 51 c层传递list类型的对象 未解决
125             var saveDataAry=[];                      
126             var data1={"userName":"山海","passWord":"123"};  
127             var data2={"userName":"大地","passWord":"456"};
128             saveDataAry.push(data1);  
129             saveDataAry.push(data2);
130             
131             $.ajax({ 
132                 type:"POST", 
133                 url:"<%=basePath%>test/requestBodyTest51.action", 
134                 dataType:"json",      
135                 contentType:"application/json",               
136                 data:JSON.stringify(saveDataAry), 
137                 success:function(data){ 
138                     alert("controller层传递java对象到ajax中");
139                     $.each(data,function(k,v){
140                          alert(k +":"+ v);
141                         });
142                 }
143              }); 
144         }
145 
146 
147         function requestBody50() {            // 50 c层传递一个java对象给ajax
148             var saveDataAry=[];  
149             var data1={"userName":"山海","passWord":"123"};  
150             var data2={"userName":"大地","passWord":"456"};
151             saveDataAry.push(data1);  
152             saveDataAry.push(data2);
153             
154             $.ajax({ 
155                 type:"POST", 
156                 url:"<%=basePath%>test/requestBodyTest50.action", 
157                 dataType:"json",      
158                 contentType:"application/json",               
159                 data:JSON.stringify(saveDataAry), 
160                 success:function(data){ 
161                     alert("controller层传递java对象到ajax中");
162                     $.each(data,function(k,v){                    // 遍历 
163                          alert(k +":"+ v);
164                         });
165                     
166 //                     alert(data);                // [object Object]
167 //                     alert(data.username);       // undefined    
168 //                     alert("成功");                   
169                 }
170              }); 
171         }
172 
173         function requestBody49() {                        // 49 ajax提交List类型的对象
174             var saveDataAry=[];  
175             var data1={"userName":"山海","passWord":"123"};  
176             var data2={"userName":"大地","passWord":"456"};
177             saveDataAry.push(data1);  
178             saveDataAry.push(data2);
179             
180             $.ajax({ 
181                 type:"POST", 
182                 url:"<%=basePath%>test/requestBodyTest49.action", 
183                 dataType:"json",      
184                 contentType:"application/json",               
185                 data:JSON.stringify(saveDataAry), 
186                 success:function(data){ 
187                     alert(data);                // [object Object]
188                     alert(data.username);       // undefined    
189                     alert("成功");                   
190                 }
191              }); 
192         }
193     
194     
195     function requestBody48() {                            // 测试RequestBody,但未能收到数据
196         $.ajax({
197             url:"<%=basePath%>test/requestBodyTest48.action",
198             dataType:"json",
199             contentType:"application/json",
200             data:'{"userName":"admin","passWord","123"}',
201             type:"post",
202             success:function(data) {
203                 alert(data);
204             },error:function(error){
205                 alert(error);
206             }
207         });
208     }
209 
210 </script>
211     
212 </body>
213 </html>
测试页面 testJSP.jsp
复制代码

 

 

SSM框架配置

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 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">
 3   <display-name>yugioh6</display-name>
 4   <welcome-file-list>
 5     <welcome-file>index.html</welcome-file>
 6     <welcome-file>index.htm</welcome-file>
 7     <welcome-file>index.jsp</welcome-file>
 8     <welcome-file>default.html</welcome-file>
 9     <welcome-file>default.htm</welcome-file>
10     <welcome-file>default.jsp</welcome-file>
11   </welcome-file-list>
12   <context-param>
13     <param-name>contextConfigLocation</param-name>
14     <param-value>classpath:spring/applicationContext-*.xml</param-value>
15   </context-param>
16   <listener>
17     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
18   </listener>
19   <filter>
20     <filter-name>encoding</filter-name>
21     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
22     <init-param>
23       <param-name>encoding</param-name>
24       <param-value>UTF-8</param-value>
25     </init-param>
26   </filter>
27   <filter-mapping>
28     <filter-name>encoding</filter-name>
29     <url-pattern>/*</url-pattern>
30   </filter-mapping>
31   <servlet>
32     <servlet-name>springmvc</servlet-name>
33     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
34     <init-param>
35       <param-name>contextConfigLocation</param-name>
36       <param-value>classpath:spring/springmvc.xml</param-value>
37     </init-param>
38     <load-on-startup>1</load-on-startup>
39   </servlet>
40   <servlet-mapping>
41     <servlet-name>springmvc</servlet-name>
42     <url-pattern>/</url-pattern>
43   </servlet-mapping>
44 </web-app>
web.xml
复制代码

 

 src/spring包下

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
 3     http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-4.0.xsd  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd  http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
 4     <!-- 以上为Spring的头文件,是Service层的 -->
 5 
 6     <!-- 配置Service扫描,包名可能会变 -->
 7     <context:component-scan base-package="shanhai.service" />
 8     
 9     
10 </beans>
applicationContext-service.xml
复制代码
复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-4.0.xsd
 3     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd  http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
 4     <!-- 以上为Spring的头文件,是Dao层的 -->
 5 
 6     <!-- 读取配置文件,文件名为jdbc.properties -->
 7     <context:property-placeholder location="classpath:spring/jdbc.properties" />
 8     
 9     <!-- 配置 数据源 -->
10     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
11         <property name="driverClassName" value="${jdbc.driver}" />
12         <property name="url" value="${jdbc.url}" />
13         <property name="username" value="${jdbc.username}" />
14         <property name="password" value="${jdbc.password}" />
15     </bean>
16     
17     <!-- 配置SqlSessionFactory -->
18     <bean class="org.mybatis.spring.SqlSessionFactoryBean">
19         <!-- 设置MyBatis核心配置文件,实际路径可能会变 -->
20         <property name="configLocation" value="classpath:spring/SqlMapConfig.xml" />
21         <!-- 设置数据源 -->
22         <property name="dataSource" ref="dataSource" />
23     </bean>
24     
25     <!-- 配置Mapper扫描 -->
26     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
27         <!-- 设置Mapper扫描包,包名可能会变 -->
28         <property name="basePackage" value="shanhai.mapper" />
29     </bean>
30     
31     <!-- 注解事务 -->
32     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
33         <property name="dataSource" ref="dataSource"/>
34     </bean>
35     
36     <!-- 开启注解 -->
37     <tx:annotation-driven transaction-manager="transactionManager"/>
38 </beans>
applicationContext-dao.xml
复制代码
复制代码
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
 3 
 4 <configuration>
 5 
 6     <!-- 别名,包名可能会变 -->
 7     <typeAliases>
 8         <package name="shanhai.pojo"/>
 9     </typeAliases>
10 
11 </configuration>
SqlMapConfig.xml
复制代码
复制代码
1 jdbc.driver=com.mysql.jdbc.Driver
2 jdbc.url=jdbc:mysql://localhost:3306/yugioh7?characterEncoding=utf-8
3 jdbc.username=真实名称
4 jdbc.password=真实密码
database.properties
复制代码
复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <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-4.0.xsd
 3     http://www.springframework.org/schema/mvc  http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
 4     <!-- 以上为Spriv MVC的头文件,是Controller层的 -->
 5     
 6     <!-- 配置Controller扫描,包名可能会变 -->
 7     <context:component-scan base-package="shanhai.controller" />
 8     
 9     <!-- 配置注解驱动 -->
10     <mvc:annotation-driven />
11     
12     <!-- 对静态资源放行  -->
13     <mvc:resources location="/css/" mapping="/css/**"/>
14     <mvc:resources location="/js/" mapping="/js/**"/>
15     <mvc:resources location="/fonts/" mapping="/fonts/**"/>
16     <mvc:resources location="/img/" mapping="/img/**"/>
17     
18     <!-- 上传图片配置实现类 -->
19     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
20         <!-- 上传图片的大小   B   5M  1*1024*1024*5-->
21         <property name="maxUploadSize" value="5000000"/>
22      </bean>
23     
24     <!-- 配置视图解析器,jsp文件夹的位置改到了WEB-INF下,和lib文件夹同级 -->
25     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
26         <!-- 前缀 -->
27         <property name="prefix" value="/WEB-INF/jsp/" />
28         <!-- 后缀 -->
29         <property name="suffix" value=".jsp" />
30     </bean>
31     
32 </beans>
springmvc.xml
复制代码

 

pojo

复制代码
  1 package shanhai.pojo;
  2 
  3 import java.io.Serializable;
  4 import java.sql.Date;
  5 
  6 public class Books implements Serializable{
  7     private static final long serialVersionUID = 1L;
  8     
  9     private int id;                            // ID
 10     private String bookTitle;                // 书名
 11     private String progress;                // 进度
 12     private String unreadChapters;            // 未读章节
 13     private String subject;                    // 科目
 14     private String note;                    // 笔记
 15     private String demo;                    // 阅读时的示例
 16     private String bookUse;                    // 使用
 17     private String format;                    // 书籍格式
 18     private Date startDate;                    // 起始阅读日期
 19     private Date endDate;                    // 结束阅读日期
 20     
 21     public Books() {
 22         super();
 23     }
 24 
 25     public Books(int id, String bookTitle, String progress, String unreadChapters, String subject, String note,
 26             String demo, String bookUse, String format, Date startDate, Date endDate) {
 27         super();
 28         this.id = id;
 29         this.bookTitle = bookTitle;
 30         this.progress = progress;
 31         this.unreadChapters = unreadChapters;
 32         this.subject = subject;
 33         this.note = note;
 34         this.demo = demo;
 35         this.bookUse = bookUse;
 36         this.format = format;
 37         this.startDate = startDate;
 38         this.endDate = endDate;
 39     }
 40 
 41     public Date getStartDate() {
 42         return startDate;
 43     }
 44 
 45     public void setStartDate(Date startDate) {
 46         this.startDate = startDate;
 47     }
 48 
 49     public Date getEndDate() {
 50         return endDate;
 51     }
 52 
 53     public void setEndDate(Date endDate) {
 54         this.endDate = endDate;
 55     }
 56     
 57 
 58     public int getId() {
 59         return id;
 60     }
 61 
 62     public void setId(int id) {
 63         this.id = id;
 64     }
 65 
 66     public String getBookTitle() {
 67         return bookTitle;
 68     }
 69 
 70     public void setBookTitle(String bookTitle) {
 71         this.bookTitle = bookTitle;
 72     }
 73 
 74     public String getProgress() {
 75         return progress;
 76     }
 77 
 78     public void setProgress(String progress) {
 79         this.progress = progress;
 80     }
 81 
 82     public String getUnreadChapters() {
 83         return unreadChapters;
 84     }
 85 
 86     public void setUnreadChapters(String unreadChapters) {
 87         this.unreadChapters = unreadChapters;
 88     }
 89 
 90     public String getSubject() {
 91         return subject;
 92     }
 93 
 94     public void setSubject(String subject) {
 95         this.subject = subject;
 96     }
 97 
 98     public String getNote() {
 99         return note;
100     }
101 
102     public void setNote(String note) {
103         this.note = note;
104     }
105 
106     public String getDemo() {
107         return demo;
108     }
109 
110     public void setDemo(String demo) {
111         this.demo = demo;
112     }
113 
114     public String getBookUse() {
115         return bookUse;
116     }
117 
118     public void setBookUse(String bookUse) {
119         this.bookUse = bookUse;
120     }
121 
122     public String getFormat() {
123         return format;
124     }
125 
126     public void setFormat(String format) {
127         this.format = format;
128     }
129 
130     @Override
131     public String toString() {
132         return "Books [id=" + id + ", bookTitle=" + bookTitle + ", progress=" + progress + ", unreadChapters="
133                 + unreadChapters + ", subject=" + subject + ", note=" + note + ", demo=" + demo + ", bookUse=" + bookUse
134                 + ", format=" + format + ", startDate=" + startDate + ", endDate="
135                 + endDate + "]";
136     }
137 }
Books
复制代码
复制代码
 1 package shanhai.pojo;
 2 
 3 import java.io.Serializable;
 4 
 5 // 目前只有一个空参,一个全参,全部的get/set方法,toString方法
 6 // 在创建需要返回不同参数的Card对象时,需要留意是否有相应的构造方法
 7 // 这是不会报异常的,到时出了问题后找不到原因,留个记录
 8 // 接收注册的对象只会输出2个属性值,原来toString只设置了两个属性
 9 public class Card implements Serializable{            
10     private static final long serialVersionUID = 1L;
11     
12     private int id;
13     private String name;
14     private String attribute;
15     private String race;
16     private int atk;
17     private int def;
18     
19     public Card() {
20         super();
21     }
22     
23     public Card(int id, String name, String attribute, String race, int atk, int def) {
24         super();
25         this.id = id;
26         this.name = name;
27         this.attribute = attribute;
28         this.race = race;
29         this.atk = atk;
30         this.def = def;
31     }
32     
33     public int getId() {
34         return id;
35     }
36     public void setId(int id) {
37         this.id = id;
38     }
39     public String getName() {
40         return name;
41     }
42     public void setName(String name) {
43         this.name = name;
44     }
45     public String getAttribute() {
46         return attribute;
47     }
48     public void setAttribute(String attribute) {
49         this.attribute = attribute;
50     }
51     public String getRace() {
52         return race;
53     }
54     public void setRace(String race) {
55         this.race = race;
56     }
57     public int getAtk() {
58         return atk;
59     }
60     public void setAtk(int atk) {
61         this.atk = atk;
62     }
63     public int getDef() {
64         return def;
65     }
66     public void setDef(int def) {
67         this.def = def;
68     }
69 
70     @Override
71     public String toString() {
72         return "Card [id=" + id + ", name=" + name + ", attribute=" + attribute + ", race=" + race + ", atk=" + atk
73                 + ", def=" + def + "]";
74     }
75     
76 }
Card
复制代码
复制代码
 1 package shanhai.pojo;
 2 
 3 public class Logininfo {                        // 表 logininfo  登录信息相关的内容
 4     private String username;                    // 用户名
 5     private String logintime;                    // 上次登录时间    
 6     private String securityQuestion1;            // 密保问题1
 7     private String securityQuestion2;            // 密保问题2
 8     private String securityQuestion3;            // 密保问题3
 9     private int loginNumber;                    // 历史登录次数
10     
11     public Logininfo() {
12         super();
13     }
14 
15     public Logininfo(String username, String logintime, String securityQuestion1, String securityQuestion2,
16             String securityQuestion3, int loginNumber) {
17         super();
18         this.username = username;
19         this.logintime = logintime;
20         this.securityQuestion1 = securityQuestion1;
21         this.securityQuestion2 = securityQuestion2;
22         this.securityQuestion3 = securityQuestion3;
23         this.loginNumber = loginNumber;
24     }
25 
26     public int getLoginNumber() {        // 12 历史登录次数 的 get/set()
27         return loginNumber;
28     }
29 
30     public void setLoginNumber(int loginNumber) {
31         this.loginNumber = loginNumber;
32     }
33 
34     public String getSecurityQuestion1() {
35         return securityQuestion1;
36     }
37 
38     public void setSecurityQuestion1(String securityQuestion1) {
39         this.securityQuestion1 = securityQuestion1;
40     }
41 
42     public String getSecurityQuestion2() {
43         return securityQuestion2;
44     }
45 
46     public void setSecurityQuestion2(String securityQuestion2) {
47         this.securityQuestion2 = securityQuestion2;
48     }
49 
50     public String getSecurityQuestion3() {
51         return securityQuestion3;
52     }
53 
54     public void setSecurityQuestion3(String securityQuestion3) {
55         this.securityQuestion3 = securityQuestion3;
56     }
57 
58     public String getUsername() {
59         return username;
60     }
61 
62     public void setUsername(String username) {
63         this.username = username;
64     }
65 
66     public String getLogintime() {
67         return logintime;
68     }
69 
70     public void setLogintime(String logintime) {
71         this.logintime = logintime;
72     }
73     
74 }
Logininfo
复制代码
复制代码
 1 package shanhai.pojo;
 2 
 3 import java.io.Serializable;
 4 
 5 public class magic_trapCard implements Serializable{        // 魔法卡和陷阱卡
 6     private static final long serialVersionUID = 1L;
 7     private int magicTrapId;            // 魔陷卡ID
 8     private String cardName;            // 卡片名称
 9     private String cardType;            // 卡片类型
10     private String deckMatch;            // 搭配的卡组
11     private String effect;                // 效果
12     
13     public magic_trapCard() {
14         super();
15     }
16 
17     public magic_trapCard(int magicTrapId,String cardName, String cardType, String deckMatch,
18             String effect) {
19         super();
20         this.magicTrapId = magicTrapId;
21         this.cardName = cardName;
22         this.cardType = cardType;
23         this.deckMatch = deckMatch;
24         this.effect = effect;
25     }
26     
27     public int getMagicTrapId() {
28         return magicTrapId;
29     }
30 
31     public void setMagicTrapId(int magicTrapId) {
32         this.magicTrapId = magicTrapId;
33     }
34     
35 
36     public String getEffect() {
37         return effect;
38     }
39     
40 
41     public void setEffect(String effect) {
42         this.effect = effect;
43     }
44 
45     public String getDeckMatch() {
46         return deckMatch;
47     }
48 
49     public void setDeckMatch(String deckMatch) {
50         this.deckMatch = deckMatch;
51     }
52 
53     public String getCardName() {
54         return cardName;
55     }
56 
57     public void setCardName(String cardName) {
58         this.cardName = cardName;
59     }
60 
61     public String getCardType() {
62         return cardType;
63     }
64 
65     public void setCardType(String cardType) {
66         this.cardType = cardType;
67     }
68 
69     public String toString() {
70         return "magic_trapCard [magicTrapId=" + magicTrapId + ", cardName=" + cardName + ", cardType=" + cardType
71                 + ", deckMatch=" + deckMatch + ", effect=" + effect + "]";
72     }
73 }
magic_trapCard
复制代码
复制代码
 1 package shanhai.pojo;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 public class PageBean<T> {
 7     private int currentPage;        //当前页
 8     private int currentCount;        //当前页显示的条数
 9     private int totalCount;            //总条数
10     private int totalPage;            //总页数
11     private List<T> cardList = new ArrayList<T>();        //每页显示的数据
12     private String likename;        //存储条件查询的关键字,在分页的情况下
13     
14     private int index;            // ServiceImpl根据(当前页面数-1)/总条数计算出来的分页查询条件
15     
16     public int getIndex() {
17         return index;
18     }
19     public void setIndex(int index) {
20         this.index = index;
21     }
22     public String getLikename() {
23         return likename;
24     }
25     public String setLikename(String likename) {
26         return this.likename = likename;
27     }
28     public int getCurrentPage() {
29         return currentPage;
30     }
31     public void setCurrentPage(int currentPage) {
32         this.currentPage = currentPage;
33     }
34     public int getCurrentCount() {
35         return currentCount;
36     }
37     public void setCurrentCount(int currentCount) {
38         this.currentCount = currentCount;
39     }
40     public int getTotalCount() {
41         return totalCount;
42     }
43     public void setTotalCount(int totalCount) {
44         this.totalCount = totalCount;
45     }
46     public int getTotalPage() {
47         return totalPage;
48     }
49     public void setTotalPage(int totalPage) {
50         this.totalPage = totalPage;
51     }
52     public List<T> getCardList() {
53         return cardList;
54     }
55     public void setCardList(List<T> cardList) {
56         this.cardList = cardList;
57     }
58 }
PageBean
复制代码
复制代码
 1 package shanhai.pojo;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 public class PageBean2<T> {
 7     private int currentPage;        //当前页
 8     private int currentCount;        //当前页显示的条数
 9     private int totalCount;            //总条数
10     private int totalPage;            //总页数
11     private List<T> cardList = new ArrayList<T>();        //每页显示的数据
12     private String likename;        //存储条件查询的关键字,在分页的情况下
13     
14     private Integer size = 10;         //每页数
15     private Integer startRow = 0;    //开始行    
16     
17     public String getLikename() {
18         return likename;
19     }
20     public String setLikename(String likename) {
21         return this.likename = likename;
22     }
23     public int getCurrentPage() {
24         return currentPage;
25     }
26     public void setCurrentPage(int currentPage) {
27         this.currentPage = currentPage;
28     }
29     public int getCurrentCount() {
30         return currentCount;
31     }
32     public void setCurrentCount(int currentCount) {
33         this.currentCount = currentCount;
34     }
35     public int getTotalCount() {
36         return totalCount;
37     }
38     public void setTotalCount(int totalCount) {
39         this.totalCount = totalCount;
40     }
41     public int getTotalPage() {
42         return totalPage;
43     }
44     public void setTotalPage(int totalPage) {
45         this.totalPage = totalPage;
46     }
47     public List<T> getCardList() {
48         return cardList;
49     }
50     public void setCardList(List<T> cardList) {
51         this.cardList = cardList;
52     }
53 }
PageBean2
复制代码
复制代码
 1 package shanhai.pojo;
 2 
 3 public class Picture {
 4     private String picName;            // 图片的名称
 5 
 6     public Picture() {
 7         super();
 8     }
 9     
10     public Picture(String picName) {
11         super();
12         this.picName = picName;
13     }
14 
15     public String getPicName() {
16         return picName;
17     }
18 
19     public void setPicName(String picName) {
20         this.picName = picName;
21     }
22 
23     @Override
24     public String toString() {
25         return "Picture [picName=" + picName + "]";
26     }
27     
28 }
Picture
复制代码
复制代码
 1 package shanhai.pojo;
 2 
 3 public class QueryVo {
 4     // 每新增一个属性就要同时添加相应的get/set方法    
 5     String name;                        // 条件查询时使用的查询条件关键字
 6     String race;                        // 下拉列表时使用的种族
 7     
 8     Integer atk;
 9     Integer atk1;                        // 根据攻击力范围进行查询,使用的两个参数
10     Integer atk2;
11     
12     private Integer page;                // 当前页
13     private Integer size = 10;             // 每页数
14     private Integer startRow = 0;        // 开始行
15     
16     public Integer getAtk() {
17         return atk;
18     }
19     public void setAtk(Integer atk) {
20         this.atk = atk;
21     }
22     public Integer getAtk1() {
23         return atk1;
24     }
25     public void setAtk1(Integer atk1) {
26         this.atk1 = atk1;
27     }
28     public Integer getAtk2() {
29         return atk2;
30     }
31     public void setAtk2(Integer atk2) {
32         this.atk2 = atk2;
33     }
34     
35     public String getRace() {
36         return race;
37     }
38     public void setRace(String race) {
39         this.race = race;
40     }
41     
42     public String getName() {
43         return name;
44     }
45     public void setName(String name) {
46         this.name = name;
47     }
48     
49     public Integer getPage() {
50         return page;
51     }
52     public void setPage(Integer page) {
53         this.page = page;
54     }
55     public Integer getSize() {
56         return size;
57     }
58     public void setSize(Integer size) {
59         this.size = size;
60     }
61     public Integer getStartRow() {
62         return startRow;
63     }
64     public void setStartRow(Integer startRow) {
65         this.startRow = startRow;
66     }
67     
68 }
QueryVo
复制代码
复制代码
  1 package shanhai.pojo;
  2 
  3 public class User {                    // yugioh7中user表,用于保存用户信息
  4     private String uid;                // user表使用的随机生成的字符串
  5     private String username;        // 用户名
  6     private String password;        // 密码
  7     private String email;            // 邮箱 新增
  8     private String name;            // 姓名 新增
  9     private String sex;                // 性别 新增
 10     private String provinces;        // 省市 新增
 11     private String provinceCity;
 12     
 13     private String birthday;        // 出生日期 新增
 14     private int state;                // 激活状态
 15     private String code;            // 激活码        由于要传入null只能使用String?
 16     private String my;                // 个性签名  
 17     private String userInfo;        // 用户信息
 18     
 19     // 新增属性后,要记得生成get/set方法,全参构造也要及时更新
 20     
 21     public User(String username, String password) {
 22         this.username = username;
 23         this.password = password;
 24     }
 25     
 26     public User( String uid, String username, String password) {    // 新增uid 
 27         this.uid = uid;
 28         this.username = username;
 29         this.password = password;
 30     }
 31     
 32     public User() {
 33     }
 34     
 35     // 全参构造,增加属性后要及时更新   ******
 36     public User(String uid, String username, String password, String email, 
 37             String name, String sex, String provinces,String provinceCity, 
 38             String birthday, int state, String code, String my, String userInfo) {
 39         super();
 40         this.uid = uid;
 41         this.username = username;
 42         this.password = password;
 43         this.email = email;
 44         this.name = name;
 45         this.sex = sex;
 46         this.provinces = provinces;
 47         this.provinceCity = provinceCity;
 48         this.birthday = birthday;
 49         this.state = state;
 50         this.code = code;
 51         this.my = my;
 52         this.userInfo = userInfo;
 53     }
 54     
 55     public String getUserInfo() {
 56         return userInfo;
 57     }
 58 
 59     public void setUserInfo(String userInfo) {
 60         this.userInfo = userInfo;
 61     }
 62 
 63     public String getProvinces() {            // 省市的get/set
 64         return provinces;
 65     }
 66 
 67     public void setProvinces(String provinces) {
 68         this.provinces = provinces;
 69     }
 70 
 71     public String getProvinceCity() {
 72         return provinceCity;
 73     }
 74 
 75     public void setProvinceCity(String provinceCity) {
 76         this.provinceCity = provinceCity;
 77     }
 78 
 79     public String getMy() {                // 个性签名的get和set方法
 80         return my;
 81     }
 82 
 83     public void setMy(String my) {
 84         this.my = my;
 85     }
 86 
 87     public String getCode() {            // 激活码 的get和set方法
 88         return code;
 89     }
 90 
 91     public void setCode(String code) {
 92         this.code = code;
 93     }
 94 
 95     public int getState() {                // 激活状态 的get和set方法
 96         return state;
 97     }
 98 
 99     public void setState(int i) {
100         this.state = i;
101     }
102 
103     public String getSex() {            // 性别 的get和set方法
104         return sex;
105     }
106 
107     public void setSex(String sex) {
108         this.sex = sex;
109     }
110 
111     public String getBirthday() {            // 出生日期 的get和set方法
112         return birthday;
113     }
114 
115     public void setBirthday(String birthday) {
116         this.birthday = birthday;
117     }
118 
119     public String getEmail() {                // 邮箱 的get和Set方法
120         return email;
121     }
122 
123     public void setEmail(String email) {
124         this.email = email;
125     }
126 
127     public String getName() {                // 姓名 的get和Set方法
128         return name;
129     }
130 
131     public void setName(String name) {
132         this.name = name;
133     }
134 
135     public String getUid() {
136         return uid;
137     }
138 
139     public void setUid(String uid) {
140         this.uid = uid;
141     }
142 
143     public String getUsername() {
144         return username;
145     }
146     public void setUsername(String username) {
147         this.username = username;
148     }
149     public String getPassword() {
150         return password;
151     }
152     public void setPassword(String password) {
153         this.password = password;
154     }
155 
156     @Override
157     public String toString() {
158         return "User [uid=" + uid + ", username=" + username + ", password=" + password + ", email=" + email + ", name="
159                 + name + ", sex=" + sex + ", birthday=" + birthday + ", state=" + state + ", code=" + code + ", my="
160                 + my + "]";
161     }
162 
163 }
User
复制代码
复制代码
 1 package shanhai.pojo;
 2 
 3 public class UserTest {
 4     private String userName;
 5     private String passWord;
 6     private String name;
 7     
 8     public UserTest() {
 9         super();
10     }
11 
12     public UserTest(String userName, String passWord, String name) {
13         super();
14         this.userName = userName;
15         this.passWord = passWord;
16         this.name = name;
17     }
18 
19     public String getName() {
20         return name;
21     }
22 
23     public void setName(String name) {
24         this.name = name;
25     }
26 
27     public String getUserName() {
28         return userName;
29     }
30 
31     public void setUserName(String userName) {
32         this.userName = userName;
33     }
34 
35     public String getPassWord() {
36         return passWord;
37     }
38 
39     public void setPassWord(String passWord) {
40         this.passWord = passWord;
41     }
42 
43     @Override
44     public String toString() {
45         return "UserTest [userName=" + userName + ", passWord=" + passWord + ", name=" + name + "]";
46     }
47 }
UserTest
复制代码

 

utils包下的工具类

复制代码
  1 package utils;
  2 
  3 import java.io.IOException;
  4 import java.util.Map;
  5 
  6 import javax.servlet.http.HttpServletRequest;
  7 import javax.servlet.jsp.JspException;
  8 import javax.servlet.jsp.JspWriter;
  9 import javax.servlet.jsp.tagext.TagSupport;
 10 
 11 /**
 12  * 显示格式 上一页 1 2 3 4 5 下一页
 13  */
 14 public class NavigationTag extends TagSupport {    //只要继承这个类,就可以自定义
 15     
 16     
 17     static final long serialVersionUID = 2372405317744358833L;
 18     
 19     /**
 20      * request 中用于保存Page<E> 对象的变量名,默认为“page”
 21      */
 22     private String bean = "page";
 23     
 24     /**
 25      * 分页跳转的url地址,此属性必须
 26      */
 27     private String url = null;
 28     
 29     /**
 30      * 显示页码数量
 31      */
 32     private int number = 5;
 33     
 34     @Override
 35     public int doStartTag() throws JspException {
 36         JspWriter writer = pageContext.getOut();
 37         HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
 38         Page page = (Page)request.getAttribute(bean); 
 39         if (page == null) 
 40             return SKIP_BODY;
 41         url = resolveUrl(url, pageContext);
 42         try {
 43             //计算总页数
 44             int pageCount = page.getTotal() / page.getSize();
 45             if (page.getTotal() % page.getSize() > 0) {
 46                 pageCount++;
 47             }
 48             writer.print("<nav><ul class=\"pagination\">");
 49             //显示“上一页”按钮
 50             if (page.getPage() > 1) {
 51                 String preUrl = append(url, "page", page.getPage() - 1);
 52                 preUrl = append(preUrl, "rows", page.getSize());
 53                 writer.print("<li><a href=\"" + preUrl + "\">上一页</a></li>");
 54             } else {
 55                 writer.print("<li class=\"disabled\"><a href=\"#\">上一页</a></li>");
 56             }
 57             //显示当前页码的前2页码和后两页码 
 58             //若1 则 1 2 3 4 5, 若2 则 1 2 3 4 5, 若3 则1 2 3 4 5,
 59             //若4 则 2 3 4 5 6 ,若10  则 8 9 10 11 12
 60             int indexPage = (page.getPage() - 2 > 0)? page.getPage() - 2 : 1;  
 61             for(int i=1; i <= number && indexPage <= pageCount; indexPage++, i++) {
 62                 if(indexPage == page.getPage()) {
 63                     writer.print( "<li class=\"active\"><a href=\"#\">"+indexPage+"<span class=\"sr-only\">(current)</span></a></li>");
 64                     continue;
 65                 }
 66                 String pageUrl  = append(url, "page", indexPage);
 67                 pageUrl = append(pageUrl, "rows", page.getSize());
 68                 writer.print("<li><a href=\"" + pageUrl + "\">"+ indexPage +"</a></li>");
 69             }
 70             //显示“下一页”按钮
 71             if (page.getPage() < pageCount) {
 72                 String nextUrl  = append(url, "page", page.getPage() + 1);
 73                 nextUrl = append(nextUrl, "rows", page.getSize());
 74                 writer.print("<li><a href=\"" + nextUrl + "\">下一页</a></li>");
 75             } else {
 76                 writer.print("<li class=\"disabled\"><a href=\"#\">下一页</a></li>");
 77             }
 78             writer.print("</nav>");
 79         } catch (IOException e) {
 80             e.printStackTrace();
 81         }
 82         return SKIP_BODY;
 83     }
 84     
 85     private String append(String url, String key, int value) {
 86 
 87         return append(url, key, String.valueOf(value));
 88     }
 89     
 90     /**
 91      * 为url 参加参数对儿
 92      * 
 93      * @param url
 94      * @param key
 95      * @param value
 96      * @return
 97      */
 98     private String append(String url, String key, String value) {
 99         if (url == null || url.trim().length() == 0) {
100             return "";
101         }
102 
103         if (url.indexOf("?") == -1) {
104             url = url + "?" + key + "=" + value;
105         } else {
106             if(url.endsWith("?")) {
107                 url = url + key + "=" + value;
108             } else {
109                 url = url + "&amp;" + key + "=" + value;
110             }
111         }
112         
113         return url;
114     }
115     
116     /**
117      * 为url 添加翻页请求参数
118      * 
119      * @param url
120      * @param pageContext
121      * @return
122      * @throws javax.servlet.jsp.JspException
123      */
124     private String resolveUrl(String url, javax.servlet.jsp.PageContext pageContext) throws JspException{
125         //UrlSupport.resolveUrl(url, context, pageContext)
126         Map params = pageContext.getRequest().getParameterMap();
127         for (Object key:params.keySet()) {
128             if ("page".equals(key) || "rows".equals(key)) continue;
129             Object value = params.get(key);
130             if (value == null) continue;
131             if (value.getClass().isArray()) {
132                 url = append(url, key.toString(), ((String[])value)[0]);
133             } else if (value instanceof String) {
134                 url = append(url, key.toString(), value.toString());
135             }
136         }
137         return url;
138     }
139     
140     
141 
142     /**
143      * @return the bean
144      */
145     public String getBean() {
146         return bean;
147     }
148 
149     /**
150      * @param bean the bean to set
151      */
152     public void setBean(String bean) {
153         this.bean = bean;
154     }
155 
156     /**
157      * @return the url
158      */
159     public String getUrl() {
160         return url;
161     }
162 
163     /**
164      * @param url the url to set
165      */
166     public void setUrl(String url) {
167         this.url = url;
168     }
169 
170     public void setNumber(int number) {
171         this.number = number;
172     }
173     
174 }
NavigationTag
复制代码
复制代码
 1 package utils;
 2 
 3 import java.util.List;
 4 
 5 public class Page<T> {
 6     
 7     private int total;        // 总记录数,就是数据表中的总条数
 8     private int page;        // 当前页数,代表当前是第几页 
 9     private int size;        // 每页显示的条数大小
10     private List<T> rows;
11     public int getTotal() {
12         return total;
13     }
14     public void setTotal(int total) {
15         this.total = total;
16     }
17     public int getPage() {
18         return page;
19     }
20     public void setPage(int page) {
21         this.page = page;
22     }
23     public int getSize() {
24         return size;
25     }
26     public void setSize(int size) {
27         this.size = size;
28     }
29     public List<T> getRows() {
30         return rows;
31     }
32     public void setRows(List<T> rows) {
33         this.rows = rows;
34     }
35     
36     
37     
38 }
Page
复制代码

Web-INF下的tld

复制代码
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE taglib
 3   PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
 4   "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
 5 <taglib>
 6     <tlib-version>2.0</tlib-version>
 7     <jsp-version>1.2</jsp-version>
 8     <short-name>common</short-name>
 9     <uri>http://itcast.cn/common/</uri>
10     <display-name>Common Tag</display-name>
11     <description>Common Tag library</description>
12 
13     <tag>
14         <name>page</name>
15         <tag-class>utils.NavigationTag</tag-class>
16         <body-content>JSP</body-content>
17         <description>create navigation for paging</description>
18         <attribute>
19             <name>bean</name>
20             <rtexprvalue>true</rtexprvalue>
21         </attribute>
22         <attribute>
23             <name>number</name>
24             <rtexprvalue>true</rtexprvalue>
25         </attribute>
26         <attribute>
27             <name>url</name>
28             <required>true</required>
29             <rtexprvalue>true</rtexprvalue>
30         </attribute>
31     </tag>
32 </taglib>
commons.tld
复制代码

 

Linux部署Web项目, VMware + SSH Secure

 

Web项目部署

 

MySQL数据库列表

 

posted @   娱乐的心  阅读(107)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示