JavaWeb项目开发案例精粹-第4章博客网站系统-005action层

1.

 1 package com.sanqing.action;
 2 
 3 import java.util.Date;
 4 import java.util.Map;
 5 
 6 import com.opensymphony.xwork2.ActionContext;
 7 import com.opensymphony.xwork2.ActionSupport;
 8 import com.sanqing.po.Article;
 9 import com.sanqing.service.ArticleService;
10 
11 public class AddArticle extends ActionSupport {
12     private String title;
13     private String content;
14     private ArticleService articleService;
15     
16     public ArticleService getArticleService() {
17         return articleService;
18     }
19     public void setArticleService(ArticleService articleService) {
20         this.articleService = articleService;
21     }
22     public String getTitle() {
23         return title;
24     }
25     public void setTitle(String title) {
26         this.title = title;
27     }
28     public String getContent() {
29         return content;
30     }
31     public void setContent(String content) {
32         this.content = content;
33     }
34     public String execute() throws Exception {
35         Map session = ActionContext.getContext().getSession();
36         String username = (String) session.get("username");
37         
38         //封装一个PO类的对象
39         Article article = new Article();
40         article.setTitle(title);
41         article.setContent(content);
42         article.setUsername(username);
43         article.setDate(new Date());
44         article.setHasread(0);
45         articleService.addArticle(article);
46         return this.SUCCESS;
47     }
48 }

2.

 1 package com.sanqing.action;
 2 
 3 import java.util.Map;
 4 
 5 import com.opensymphony.xwork2.ActionContext;
 6 import com.opensymphony.xwork2.ActionSupport;
 7 import com.sanqing.po.Critique;
 8 import com.sanqing.service.CritiqueService;
 9 
10 public class AddCritique extends ActionSupport {
11     private CritiqueService critiqueService;
12     private int id;
13     private String content;
14 
15     public int getId() {
16         return id;
17     }
18 
19     public void setId(int id) {
20         this.id = id;
21     }
22 
23     public String getContent() {
24         return content;
25     }
26 
27     public void setContent(String content) {
28         this.content = content;
29     }
30 
31     public CritiqueService getCritiqueService() {
32         return critiqueService;
33     }
34 
35     public void setCritiqueService(CritiqueService critiqueService) {
36         this.critiqueService = critiqueService;
37     }
38 
39     public String execute() throws Exception {
40         Map session = ActionContext.getContext().getSession();
41         String username = (String) session.get("username");
42         Critique critique = new Critique();
43         if(username == null || "".equals(username)) {
44             critique.setUsername("匿名");
45         } else {
46             critique.setUsername(username);
47         }
48         critique.setAId(id);
49         critique.setContent(content);
50 
51         // 保存评论
52         this.critiqueService.addCritique(critique);
53 
54         return this.SUCCESS;
55     }
56 
57 }

3.EditBlogInfo-validation.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE validators PUBLIC 
 3           "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
 4           "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
 5 <validators>
 6     <validator type="requiredstring">
 7         <param name="fieldName">blogtitle</param>
 8         <param name="trim">true</param>
 9         <message>必须输入博客标题</message>
10     </validator>
11 
12     <validator type="regex">
13         <param name="fieldName">blogtitle</param>
14         <param name="expression"><![CDATA[([u4e00-u9fa5,a-z,A-Z,0-9]{4,20})]]></param>
15         <message>博客标题长度必须为4至20之间</message>
16     </validator>
17 
18     <validator type="requiredstring">
19         <param name="fieldName">idiograph</param>
20         <param name="trim">true</param>
21         <message>必须输入个性签名</message>
22     </validator>
23 
24     <validator type="regex">
25         <param name="fieldName">idiograph</param>
26         <param name="expression"><![CDATA[([u4e00-u9fa5,a-z,A-Z,0-9]{4,20})]]></param>
27         <message>个性签名长度必须为4至20之间</message>
28     </validator>
29 </validators>

4.

 1 package com.sanqing.action;
 2 
 3 import java.util.Map;
 4 
 5 import com.opensymphony.xwork2.ActionContext;
 6 import com.opensymphony.xwork2.ActionSupport;
 7 import com.sanqing.po.BlogInfo;
 8 import com.sanqing.service.BlogInfoService;
 9 
10 public class EditBlogInfo extends ActionSupport {
11     private String blogtitle;
12     private String idiograph;
13     private BlogInfoService blogInfoService;
14 
15     public BlogInfoService getBlogInfoService() {
16         return blogInfoService;
17     }
18 
19     public void setBlogInfoService(BlogInfoService blogInfoService) {
20         this.blogInfoService = blogInfoService;
21     }
22 
23     public String getBlogtitle() {
24         return blogtitle;
25     }
26 
27     public void setBlogtitle(String blogtitle) {
28         this.blogtitle = blogtitle;
29     }
30 
31     public String getIdiograph() {
32         return idiograph;
33     }
34 
35     public void setIdiograph(String idiograph) {
36         this.idiograph = idiograph;
37     }
38 
39     public String execute() throws Exception {
40 //        //获得request
41 //        HttpServletRequest request = ServletActionContext.getRequest();
42 //        //获得session
43 //        HttpSession session =request.getSession();
44 //        //获得username
45 //        String username = (String) session.getAttribute("username");
46         
47         Map session = ActionContext.getContext().getSession();
48         String username = (String) session.get("username");
49         
50         BlogInfo blogInfo = new BlogInfo();
51         //设置用户名
52         blogInfo.setUsername(username);
53         //设置博客标题
54         blogInfo.setBlogtitle(blogtitle);
55         //设置个性签名
56         blogInfo.setIdiograph(idiograph);
57         //调用业务逻辑组件来完成设置
58         blogInfoService.setBlogInfo(blogInfo);
59         
60         return this.SUCCESS;
61     }
62 
63 }

5.

 1 package com.sanqing.action;
 2 
 3 import java.util.Map;
 4 
 5 import com.opensymphony.xwork2.ActionContext;
 6 import com.opensymphony.xwork2.ActionSupport;
 7 import com.sanqing.po.BlogInfo;
 8 import com.sanqing.service.BlogInfoService;
 9 
10 public class GetBlogInfo extends ActionSupport {
11 
12     private BlogInfoService blogInfoService;
13 
14     public BlogInfoService getBlogInfoService() {
15         return blogInfoService;
16     }
17 
18     public void setBlogInfoService(BlogInfoService blogInfoService) {
19         this.blogInfoService = blogInfoService;
20     }
21     
22     public String execute() throws Exception {
23         //获得usrname
24         Map session = ActionContext.getContext().getSession();
25         String username = (String) session.get("username");
26         
27         //通过业务逻辑组件来查询
28         BlogInfo bloginfo  = blogInfoService.getBlogInfo(username);
29         
30         if(bloginfo != null) {
31             session.put("blogtitle", bloginfo.getBlogtitle());
32             session.put("idiograph", bloginfo.getIdiograph());
33         }
34         return this.SUCCESS;
35     }
36 }

6.

 1 package com.sanqing.action;
 2 
 3 import java.util.Map;
 4 
 5 import javax.servlet.http.HttpServletRequest;
 6 
 7 import org.apache.struts2.ServletActionContext;
 8 
 9 import com.opensymphony.xwork2.ActionContext;
10 import com.opensymphony.xwork2.ActionSupport;
11 import com.sanqing.po.User;
12 import com.sanqing.service.UserService;
13 
14 public class Login extends ActionSupport {
15     private String username;
16     private String password;
17     private UserService userService;
18 
19     public UserService getUserService() {
20         return userService;
21     }
22 
23     public void setUserService(UserService userService) {
24         this.userService = userService;
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     public String execute() throws Exception {
44         User user = new User();
45         user.setUsername(username);
46         user.setPassword(password);
47         //获得request
48         HttpServletRequest request = ServletActionContext.getRequest();
49         if(userService.loginUser(user)) {
50             request.setAttribute("url", "user/getBlogInfo.action");
51             request.setAttribute("info", "登陆成功");
52             //将username保存到session范围中
53 //            HttpSession session =request.getSession();
54             Map session = ActionContext.getContext().getSession();
55 //            session.setAttribute("username", username);    
56             session.put("username", username);
57             return SUCCESS;
58         } else {
59             request.setAttribute("url", "login.jsp");
60             request.setAttribute("info", "登陆失败");
61             return ERROR;
62         }
63     }
64 
65 }

7.

 1 package com.sanqing.action;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.InputStream;
 7 import java.io.OutputStream;
 8 import java.util.Map;
 9 import java.util.UUID;
10 
11 import org.apache.commons.io.FilenameUtils;
12 import org.apache.struts2.ServletActionContext;
13 
14 import com.opensymphony.xwork2.ActionSupport;
15 
16 public class PhotoUpload  extends ActionSupport{
17     private File myFile;
18     private String myFileContentType;
19     private String myFileFileName;
20 
21     public File getMyFile() {
22         return myFile;
23     }
24 
25     public void setMyFile(File myFile) {
26         this.myFile = myFile;
27     }
28 
29     public String getMyFileContentType() {
30         return myFileContentType;
31     }
32 
33     public void setMyFileContentType(String myFileContentType) {
34         this.myFileContentType = myFileContentType;
35     }
36 
37     public String getMyFileFileName() {
38         return myFileFileName;
39     }
40 
41     public void setMyFileFileName(String myFileFileName) {
42         this.myFileFileName = myFileFileName;
43     }
44 
45     public String execute() throws Exception {
46         //获得username
47         Map session = ServletActionContext.getContext().getSession();
48         String username = (String) session.get("username");
49         
50         //创建一个输入流
51         InputStream is = new FileInputStream(myFile);
52         //设置文件保存目录
53         String photoPath = 
54             ServletActionContext.getServletContext().getRealPath("/user/photo/" + username);
55         File filePhotoPath = new File(photoPath);
56         if(!filePhotoPath.isDirectory()) {
57             filePhotoPath.mkdir();
58         }
59         
60         //解决中文文件名问题
61         String extension = FilenameUtils.getExtension(this.getMyFileFileName());
62         String filename = UUID.randomUUID().toString() + "."+ extension;
63         
64         //设置目标文件
65         File tofile = new File(photoPath,filename);
66         //使用输出流来包装目标文件
67         OutputStream os = new FileOutputStream(tofile);
68         byte[] buffer = new byte[1024];
69         int length = 0;
70         while((length = is.read(buffer)) > 0) {
71             os.write(buffer, 0, length);
72         }
73         //关闭输入流
74         is.close();
75         //关闭输出流
76         os.close();
77         
78         return this.SUCCESS;
79     }
80 
81     
82 }

8.Register-validation.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE validators PUBLIC 
 3           "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
 4           "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
 5 <validators>
 6     <validator type="requiredstring">
 7         <param name="fieldName">username</param>
 8         <param name="trim">true</param>
 9         <message>必须输入用户名</message>
10     </validator>
11 
12     <validator type="regex">
13         <param name="fieldName">username</param>
14         <param name="expression"><![CDATA[(w{6,20})]]></param>
15         <message>用户名长度必须为6至20之间</message>
16     </validator>
17 
18     <validator type="requiredstring">
19         <param name="fieldName">password</param>
20         <param name="trim">true</param>
21         <message>必须输入密码</message>
22     </validator>
23 
24     <validator type="regex">
25         <param name="fieldName">password</param>
26         <param name="expression"><![CDATA[(w{6,20})]]></param>
27         <message>密码长度必须为6至20之间</message>
28     </validator>
29 
30     <validator type="requiredstring">
31         <param name="fieldName">repassword</param>
32         <param name="trim">true</param>
33         <message>必须输入确认密码</message>
34     </validator>
35 
36     <validator type="regex">
37         <param name="fieldName">repassword</param>
38         <param name="expression"><![CDATA[(w{6,20})]]></param>
39         <message>确认密码长度必须为6至20之间</message>
40     </validator>
41 
42     <validator type="fieldexpression">
43         <param name="fieldName">repassword</param>
44         <param name="expression"><![CDATA[(repassword==password)]]></param>
45         <message>密码和确认密码必须一致</message>
46     </validator>
47 
48     <validator type="requiredstring">
49         <param name="fieldName">nickname</param>
50         <param name="trim">true</param>
51         <message>必须输入昵称</message>
52     </validator>
53 
54     <validator type="regex">
55         <param name="fieldName">nickname</param>
56         <param name="expression"><![CDATA[([u4e00-u9fa5]{2,20})]]></param>
57         <message>昵称长度必须为2至20之间</message>
58     </validator>
59     
60         <validator type="requiredstring">
61         <param name="fieldName">answer</param>
62         <param name="trim">true</param>
63         <message>必须输入密码保护答案</message>
64     </validator>
65 
66     <validator type="regex">
67         <param name="fieldName">answer</param>
68         <param name="expression"><![CDATA[([u4e00-u9fa5]{5,50})]]></param>
69         <message>密码保护答案长度必须为5至50之间</message>
70     </validator>
71 </validators>

9.

 1 package com.sanqing.action;
 2 
 3 import javax.servlet.http.HttpServletRequest;
 4 
 5 import org.apache.struts2.ServletActionContext;
 6 
 7 import com.opensymphony.xwork2.ActionContext;
 8 import com.opensymphony.xwork2.ActionSupport;
 9 import com.sanqing.po.User;
10 import com.sanqing.service.UserService;
11 
12 public class Register extends ActionSupport{
13     private String username;
14     private String password;
15     private String repassword;
16     private String nickname;
17     private String question;
18     private String answer;
19     private UserService userService;
20     
21     public UserService getUserService() {
22         return userService;
23     }
24     public void setUserService(UserService userService) {
25         this.userService = userService;
26     }
27     public String getUsername() {
28         return username;
29     }
30     public void setUsername(String username) {
31         this.username = username;
32     }
33     public String getPassword() {
34         return password;
35     }
36     public void setPassword(String password) {
37         this.password = password;
38     }
39     public String getRepassword() {
40         return repassword;
41     }
42     public void setRepassword(String repassword) {
43         this.repassword = repassword;
44     }
45     public String getNickname() {
46         return nickname;
47     }
48     public void setNickname(String nickname) {
49         this.nickname = nickname;
50     }
51     public String getQuestion() {
52         return question;
53     }
54     public void setQuestion(String question) {
55         this.question = question;
56     }
57     public String getAnswer() {
58         return answer;
59     }
60     public void setAnswer(String answer) {
61         this.answer = answer;
62     }
63     
64     
65     public String execute() throws Exception {
66         //封装一个user对象
67         User user = new User();
68         user.setUsername(username);
69         user.setPassword(password);
70         user.setNickname(nickname);
71         user.setQuestion(question);
72         user.setAnswer(answer);
73         //获得request
74         HttpServletRequest request = ServletActionContext.getRequest();
75         if(userService.registerUser(user)) {
76             request.setAttribute("url", "login.jsp");
77             request.setAttribute("info", "注册成功");
78             return SUCCESS;
79         }else {
80             request.setAttribute("url", "register.jsp");
81             request.setAttribute("info", "注册失败");
82             return ERROR;
83         }
84     }
85 
86 }

10.

 1 package com.sanqing.action;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import java.util.Map;
 6 
 7 import javax.servlet.http.HttpServletRequest;
 8 
 9 import org.apache.struts2.ServletActionContext;
10 
11 import com.opensymphony.xwork2.ActionContext;
12 import com.opensymphony.xwork2.ActionSupport;
13 import com.sanqing.fenye.Page;
14 import com.sanqing.fenye.Result;
15 import com.sanqing.po.Article;
16 import com.sanqing.service.ArticleService;
17 
18 public class ShowAllArticle extends ActionSupport{
19     private ArticleService articleService;
20     private int currentPage;
21 
22     public int getCurrentPage() {
23         return currentPage;
24     }
25     public void setCurrentPage(int currentPage) {
26         this.currentPage = currentPage;
27     }
28     public ArticleService getArticleService() {
29         return articleService;
30     }
31     public void setArticleService(ArticleService articleService) {
32         this.articleService = articleService;
33     }
34     
35     public String execute() throws Exception {
36         //通过调用业务逻辑组件来完成查询
37         Page page = new Page();
38         page.setCurrentPage(this.getCurrentPage());
39         page.setEveryPage(10);
40         
41         Result result = articleService.showArticleByPage(page);
42         page = result.getPage();
43         List<Article> all = result.getList();
44         
45         List critiqueCounts = new ArrayList();
46         for(Article article : all) {
47             critiqueCounts.add(articleService.getCritiqueCount(article.getId()));
48         }
49         
50         //把查询到的结果保存在一个范围,request
51         HttpServletRequest request = ServletActionContext.getRequest();
52         request.setAttribute("all", all);
53         request.setAttribute("page", page);
54         request.setAttribute("critiqueCounts",critiqueCounts);
55         return this.SUCCESS;
56     }
57     
58 }

11.

  1 package com.sanqing.action;
  2 
  3 import java.text.SimpleDateFormat;
  4 import java.util.Date;
  5 import java.util.Map;
  6 
  7 import javax.servlet.http.HttpServletRequest;
  8 
  9 import org.apache.struts2.ServletActionContext;
 10 
 11 import com.opensymphony.xwork2.ActionContext;
 12 import com.opensymphony.xwork2.ActionSupport;
 13 import com.sanqing.fenye.Page;
 14 import com.sanqing.fenye.Result;
 15 import com.sanqing.po.Article;
 16 import com.sanqing.po.BlogInfo;
 17 import com.sanqing.service.ArticleService;
 18 import com.sanqing.service.BlogInfoService;
 19 import com.sanqing.service.CritiqueService;
 20 import com.sanqing.service.DianjiliangService;
 21 
 22 public class ShowArticle extends ActionSupport {
 23     // 业务逻辑组件属性
 24     private ArticleService articleService;
 25     // id属性
 26     private int id;
 27     // 点击量的业务逻辑组件
 28     private DianjiliangService dianjiliangService;
 29     // 评论的业务逻辑组件
 30     private CritiqueService critiqueService;
 31     //设置当前页
 32     private int currentPage;
 33     
 34     //username
 35     private String username;
 36     
 37     private BlogInfoService blogInfoService;
 38 
 39     public BlogInfoService getBlogInfoService() {
 40         return blogInfoService;
 41     }
 42 
 43     public void setBlogInfoService(BlogInfoService blogInfoService) {
 44         this.blogInfoService = blogInfoService;
 45     }
 46 
 47     public String getUsername() {
 48         return username;
 49     }
 50 
 51     public void setUsername(String username) {
 52         this.username = username;
 53     }
 54 
 55     public int getCurrentPage() {
 56         return currentPage;
 57     }
 58 
 59     public void setCurrentPage(int currentPage) {
 60         this.currentPage = currentPage;
 61     }
 62 
 63     public CritiqueService getCritiqueService() {
 64         return critiqueService;
 65     }
 66 
 67     public void setCritiqueService(CritiqueService critiqueService) {
 68         this.critiqueService = critiqueService;
 69     }
 70 
 71     public DianjiliangService getDianjiliangService() {
 72         return dianjiliangService;
 73     }
 74 
 75     public void setDianjiliangService(DianjiliangService dianjiliangService) {
 76         this.dianjiliangService = dianjiliangService;
 77     }
 78 
 79     public int getId() {
 80         return id;
 81     }
 82 
 83     public void setId(int id) {
 84         this.id = id;
 85     }
 86 
 87     public ArticleService getArticleService() {
 88         return articleService;
 89     }
 90 
 91     public void setArticleService(ArticleService articleService) {
 92         this.articleService = articleService;
 93     }
 94 
 95     public String execute() throws Exception {
 96         // 将文章设置到request范围
 97         HttpServletRequest request = ServletActionContext.getRequest();
 98         // 按ID查询文章
 99         Article article = articleService.showArticle(id);
100         // 获得用户IP
101         String IP = request.getRemoteAddr();
102         // 获得当前时间
103         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
104         String stime = sdf.format(new Date());
105         Date time = sdf.parse(stime);
106 
107         if (!dianjiliangService.isVistor(id, IP, time)) {
108             // 点击量增加
109             article.setHasread(article.getHasread() + 1);
110         }
111         // 将更新的Article保存到数据表中
112         articleService.addArticle(article);
113         
114         
115         //显示评论
116         Page page = new Page();
117         page.setCurrentPage(this.getCurrentPage());
118         page.setEveryPage(5);
119         
120         Result result = critiqueService.showCritiqueByPage(id, page);
121         
122         request.setAttribute("page", result.getPage());
123         request.setAttribute("allCri", result.getList());
124         request.setAttribute("article", article);
125         
126         //取得个性化设置
127         //通过业务逻辑组件来查询
128         if(username != null || !"".equals(username)) {
129             Map session = ActionContext.getContext().getSession();
130             BlogInfo bloginfo  = blogInfoService.getBlogInfo(username);
131             if(bloginfo != null) {
132                 session.put("blogtitle", bloginfo.getBlogtitle());
133                 session.put("idiograph", bloginfo.getIdiograph());
134             }
135         }
136         return this.SUCCESS;
137     }
138 
139 }

12.

 1 package com.sanqing.action;
 2 
 3 import java.io.File;
 4 import java.util.Map;
 5 
 6 import javax.servlet.http.HttpServletRequest;
 7 
 8 import org.apache.struts2.ServletActionContext;
 9 
10 import com.opensymphony.xwork2.ActionSupport;
11 
12 public class ShowPhoto  extends ActionSupport{
13 
14     public String execute() throws Exception {
15         //获得username
16         Map session = ServletActionContext.getContext().getSession();
17         String username = (String) session.get("username");
18         
19         //设置文件目录
20         String photoPath = 
21             ServletActionContext.getServletContext().getRealPath("/user/photo/" + username);
22         //使用File封装
23         File fphotoPath = new File(photoPath);
24         //获得相册目录的所有图片文件
25         String[] photoList = fphotoPath.list();
26         //将图片列表设置到request范围
27         HttpServletRequest request = ServletActionContext.getRequest();
28         request.setAttribute("photoList", photoList);
29         return super.execute();
30     }
31 
32 }

13

 1 package com.sanqing.action;
 2 
 3 import java.util.List;
 4 
 5 import org.apache.struts2.ServletActionContext;
 6 
 7 import com.opensymphony.xwork2.ActionSupport;
 8 import com.sanqing.fenye.Page;
 9 import com.sanqing.fenye.Result;
10 import com.sanqing.po.Article;
11 import com.sanqing.rss.CreateRss;
12 import com.sanqing.service.ArticleService;
13 
14 public class ShowRSS extends ActionSupport {
15     private ArticleService articleService;
16     public ArticleService getArticleService() {
17         return articleService;
18     }
19     public void setArticleService(ArticleService articleService) {
20         this.articleService = articleService;
21     }
22     public String execute() throws Exception {
23         Page page = new Page();        //分页信息
24         page.setCurrentPage(0);        //设置当前页为第一页
25         page.setEveryPage(10);        //每页显示10条记录
26         Result result = articleService.
27             showArticleByPage(page);//通过调用业务逻辑组件来完成查询
28         page = result.getPage();
29         List<Article> all = result.getList();//获得文章结果集
30         String filePath = ServletActionContext.
31             getServletContext().getRealPath("/rss.xml");//设置订阅文件地址
32         CreateRss.publishRss(all, filePath);//写入订阅文件
33         return this.SUCCESS;
34     }
35 }

14.

 1 package com.sanqing.action;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import java.util.Map;
 6 
 7 import javax.servlet.http.HttpServletRequest;
 8 
 9 import org.apache.struts2.ServletActionContext;
10 
11 import com.opensymphony.xwork2.ActionContext;
12 import com.opensymphony.xwork2.ActionSupport;
13 import com.sanqing.fenye.Page;
14 import com.sanqing.fenye.Result;
15 import com.sanqing.po.Article;
16 import com.sanqing.service.ArticleService;
17 
18 public class ShowUserAllArticle extends ActionSupport{
19     private ArticleService articleService;
20     private int currentPage;
21     private String username;
22 
23     public String getUsername() {
24         return username;
25     }
26     public void setUsername(String username) {
27         this.username = username;
28     }
29     public int getCurrentPage() {
30         return currentPage;
31     }
32     public void setCurrentPage(int currentPage) {
33         this.currentPage = currentPage;
34     }
35     public ArticleService getArticleService() {
36         return articleService;
37     }
38     public void setArticleService(ArticleService articleService) {
39         this.articleService = articleService;
40     }
41     
42     public String execute() throws Exception {
43         if(username == null || "".equals(username)) {
44             //首先要获得session
45             Map session = ActionContext.getContext().getSession();
46             //获得username
47             username = (String) session.get("username");
48         }
49         
50         //通过调用业务逻辑组件来完成查询
51         Page page = new Page();
52         page.setCurrentPage(this.getCurrentPage());
53         page.setEveryPage(5);
54         
55         Result result = articleService.showUserArticleByPage(username, page);
56         page = result.getPage();
57         List<Article> all = result.getList();
58         List critiqueCounts = new ArrayList();
59         
60         for(Article article : all) {
61             critiqueCounts.add(articleService.getCritiqueCount(article.getId()));
62         }
63         
64         //把查询到的结果保存在一个范围,request
65         HttpServletRequest request = ServletActionContext.getRequest();
66         request.setAttribute("all", all);
67         request.setAttribute("page", page);
68         request.setAttribute("critiqueCounts",critiqueCounts);
69         return this.SUCCESS;
70     }
71     
72 }
原文地址:https://www.cnblogs.com/shamgod/p/5323379.html