JavaWeb项目开发案例精粹-第4章博客网站系统-005action层
2016-03-26 17:11
696 查看
1.
2.
3.EditBlogInfo-validation.xml
4.
5.
6.
7.
8.Register-validation.xml
9.
10.
11.
12.
13
14.
package com.sanqing.action; import java.util.Date; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.sanqing.po.Article; import com.sanqing.service.ArticleService; public class AddArticle extends ActionSupport { private String title; private String content; private ArticleService articleService; public ArticleService getArticleService() { return articleService; } public void setArticleService(ArticleService articleService) { this.articleService = articleService; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String execute() throws Exception { Map session = ActionContext.getContext().getSession(); String username = (String) session.get("username"); //封装一个PO类的对象 Article article = new Article(); article.setTitle(title); article.setContent(content); article.setUsername(username); article.setDate(new Date()); article.setHasread(0); articleService.addArticle(article); return this.SUCCESS; } }
2.
package com.sanqing.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.sanqing.po.Critique; import com.sanqing.service.CritiqueService; public class AddCritique extends ActionSupport { private CritiqueService critiqueService; private int id; private String content; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public CritiqueService getCritiqueService() { return critiqueService; } public void setCritiqueService(CritiqueService critiqueService) { this.critiqueService = critiqueService; } public String execute() throws Exception { Map session = ActionContext.getContext().getSession(); String username = (String) session.get("username"); Critique critique = new Critique(); if(username == null || "".equals(username)) { critique.setUsername("匿名"); } else { critique.setUsername(username); } critique.setAId(id); critique.setContent(content); // 保存评论 this.critiqueService.addCritique(critique); return this.SUCCESS; } }
3.EditBlogInfo-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <validator type="requiredstring"> <param name="fieldName">blogtitle</param> <param name="trim">true</param> <message>必须输入博客标题</message> </validator> <validator type="regex"> <param name="fieldName">blogtitle</param> <param name="expression"><![CDATA[([\u4e00-\u9fa5,a-z,A-Z,0-9]{4,20})]]></param> <message>博客标题长度必须为4至20之间</message> </validator> <validator type="requiredstring"> <param name="fieldName">idiograph</param> <param name="trim">true</param> <message>必须输入个性签名</message> </validator> <validator type="regex"> <param name="fieldName">idiograph</param> <param name="expression"><![CDATA[([\u4e00-\u9fa5,a-z,A-Z,0-9]{4,20})]]></param> <message>个性签名长度必须为4至20之间</message> </validator> </validators>
4.
package com.sanqing.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.sanqing.po.BlogInfo; import com.sanqing.service.BlogInfoService; public class EditBlogInfo extends ActionSupport { private String blogtitle; private String idiograph; private BlogInfoService blogInfoService; public BlogInfoService getBlogInfoService() { return blogInfoService; } public void setBlogInfoService(BlogInfoService blogInfoService) { this.blogInfoService = blogInfoService; } public String getBlogtitle() { return blogtitle; } public void setBlogtitle(String blogtitle) { this.blogtitle = blogtitle; } public String getIdiograph() { return idiograph; } public void setIdiograph(String idiograph) { this.idiograph = idiograph; } public String execute() throws Exception { // //获得request // HttpServletRequest request = ServletActionContext.getRequest(); // //获得session // HttpSession session =request.getSession(); // //获得username // String username = (String) session.getAttribute("username"); Map session = ActionContext.getContext().getSession(); String username = (String) session.get("username"); BlogInfo blogInfo = new BlogInfo(); //设置用户名 blogInfo.setUsername(username); //设置博客标题 blogInfo.setBlogtitle(blogtitle); //设置个性签名 blogInfo.setIdiograph(idiograph); //调用业务逻辑组件来完成设置 blogInfoService.setBlogInfo(blogInfo); return this.SUCCESS; } }
5.
package com.sanqing.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.sanqing.po.BlogInfo; import com.sanqing.service.BlogInfoService; public class GetBlogInfo extends ActionSupport { private BlogInfoService blogInfoService; public BlogInfoService getBlogInfoService() { return blogInfoService; } public void setBlogInfoService(BlogInfoService blogInfoService) { this.blogInfoService = blogInfoService; } public String execute() throws Exception { //获得usrname Map session = ActionContext.getContext().getSession(); String username = (String) session.get("username"); //通过业务逻辑组件来查询 BlogInfo bloginfo = blogInfoService.getBlogInfo(username); if(bloginfo != null) { session.put("blogtitle", bloginfo.getBlogtitle()); session.put("idiograph", bloginfo.getIdiograph()); } return this.SUCCESS; } }
6.
package com.sanqing.action; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.sanqing.po.User; import com.sanqing.service.UserService; public class Login extends ActionSupport { private String username; private String password; private UserService userService; public UserService getUserService() { return userService; } public void setUserService(UserService userService) { this.userService = userService; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String execute() throws Exception { User user = new User(); user.setUsername(username); user.setPassword(password); //获得request HttpServletRequest request = ServletActionContext.getRequest(); if(userService.loginUser(user)) { request.setAttribute("url", "user/getBlogInfo.action"); request.setAttribute("info", "登陆成功"); //将username保存到session范围中 // HttpSession session =request.getSession(); Map session = ActionContext.getContext().getSession(); // session.setAttribute("username", username); session.put("username", username); return SUCCESS; } else { request.setAttribute("url", "login.jsp"); request.setAttribute("info", "登陆失败"); return ERROR; } } }
7.
package com.sanqing.action; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.Map; import java.util.UUID; import org.apache.commons.io.FilenameUtils; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class PhotoUpload extends ActionSupport{ private File myFile; private String myFileContentType; private String myFileFileName; public File getMyFile() { return myFile; } public void setMyFile(File myFile) { this.myFile = myFile; } public String getMyFileContentType() { return myFileContentType; } public void setMyFileContentType(String myFileContentType) { this.myFileContentType = myFileContentType; } public String getMyFileFileName() { return myFileFileName; } public void setMyFileFileName(String myFileFileName) { this.myFileFileName = myFileFileName; } public String execute() throws Exception { //获得username Map session = ServletActionContext.getContext().getSession(); String username = (String) session.get("username"); //创建一个输入流 InputStream is = new FileInputStream(myFile); //设置文件保存目录 String photoPath = ServletActionContext.getServletContext().getRealPath("/user/photo/" + username); File filePhotoPath = new File(photoPath); if(!filePhotoPath.isDirectory()) { filePhotoPath.mkdir(); } //解决中文文件名问题 String extension = FilenameUtils.getExtension(this.getMyFileFileName()); String filename = UUID.randomUUID().toString() + "."+ extension; //设置目标文件 File tofile = new File(photoPath,filename); //使用输出流来包装目标文件 OutputStream os = new FileOutputStream(tofile); byte[] buffer = new byte[1024]; int length = 0; while((length = is.read(buffer)) > 0) { os.write(buffer, 0, length); } //关闭输入流 is.close(); //关闭输出流 os.close(); return this.SUCCESS; } }
8.Register-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <validator type="requiredstring"> <param name="fieldName">username</param> <param name="trim">true</param> <message>必须输入用户名</message> </validator> <validator type="regex"> <param name="fieldName">username</param> <param name="expression"><![CDATA[(\w{6,20})]]></param> <message>用户名长度必须为6至20之间</message> </validator> <validator type="requiredstring"> <param name="fieldName">password</param> <param name="trim">true</param> <message>必须输入密码</message> </validator> <validator type="regex"> <param name="fieldName">password</param> <param name="expression"><![CDATA[(\w{6,20})]]></param> <message>密码长度必须为6至20之间</message> </validator> <validator type="requiredstring"> <param name="fieldName">repassword</param> <param name="trim">true</param> <message>必须输入确认密码</message> </validator> <validator type="regex"> <param name="fieldName">repassword</param> <param name="expression"><![CDATA[(\w{6,20})]]></param> <message>确认密码长度必须为6至20之间</message> </validator> <validator type="fieldexpression"> <param name="fieldName">repassword</param> <param name="expression"><![CDATA[(repassword==password)]]></param> <message>密码和确认密码必须一致</message> </validator> <validator type="requiredstring"> <param name="fieldName">nickname</param> <param name="trim">true</param> <message>必须输入昵称</message> </validator> <validator type="regex"> <param name="fieldName">nickname</param> <param name="expression"><![CDATA[([\u4e00-\u9fa5]{2,20})]]></param> <message>昵称长度必须为2至20之间</message> </validator> <validator type="requiredstring"> <param name="fieldName">answer</param> <param name="trim">true</param> <message>必须输入密码保护答案</message> </validator> <validator type="regex"> <param name="fieldName">answer</param> <param name="expression"><![CDATA[([\u4e00-\u9fa5]{5,50})]]></param> <message>密码保护答案长度必须为5至50之间</message> </validator> </validators>
9.
package com.sanqing.action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.sanqing.po.User; import com.sanqing.service.UserService; public class Register extends ActionSupport{ private String username; private String password; private String repassword; private String nickname; private String question; private String answer; private UserService userService; public UserService getUserService() { return userService; } public void setUserService(UserService userService) { this.userService = userService; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRepassword() { return repassword; } public void setRepassword(String repassword) { this.repassword = repassword; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getQuestion() { return question; } public void setQuestion(String question) { this.question = question; } public String getAnswer() { return answer; } public void setAnswer(String answer) { this.answer = answer; } public String execute() throws Exception { //封装一个user对象 User user = new User(); user.setUsername(username); user.setPassword(password); user.setNickname(nickname); user.setQuestion(question); user.setAnswer(answer); //获得request HttpServletRequest request = ServletActionContext.getRequest(); if(userService.registerUser(user)) { request.setAttribute("url", "login.jsp"); request.setAttribute("info", "注册成功"); return SUCCESS; }else { request.setAttribute("url", "register.jsp"); request.setAttribute("info", "注册失败"); return ERROR; } } }
10.
package com.sanqing.action; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.sanqing.fenye.Page; import com.sanqing.fenye.Result; import com.sanqing.po.Article; import com.sanqing.service.ArticleService; public class ShowAllArticle extends ActionSupport{ private ArticleService articleService; private int currentPage; public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public ArticleService getArticleService() { return articleService; } public void setArticleService(ArticleService articleService) { this.articleService = articleService; } public String execute() throws Exception { //通过调用业务逻辑组件来完成查询 Page page = new Page(); page.setCurrentPage(this.getCurrentPage()); page.setEveryPage(10); Result result = articleService.showArticleByPage(page); page = result.getPage(); List<Article> all = result.getList(); List critiqueCounts = new ArrayList(); for(Article article : all) { critiqueCounts.add(articleService.getCritiqueCount(article.getId())); } //把查询到的结果保存在一个范围,request HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("all", all); request.setAttribute("page", page); request.setAttribute("critiqueCounts",critiqueCounts); return this.SUCCESS; } }
11.
package com.sanqing.action; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.sanqing.fenye.Page; import com.sanqing.fenye.Result; import com.sanqing.po.Article; import com.sanqing.po.BlogInfo; import com.sanqing.service.ArticleService; import com.sanqing.service.BlogInfoService; import com.sanqing.service.CritiqueService; import com.sanqing.service.DianjiliangService; public class ShowArticle extends ActionSupport { // 业务逻辑组件属性 private ArticleService articleService; // id属性 private int id; // 点击量的业务逻辑组件 private DianjiliangService dianjiliangService; // 评论的业务逻辑组件 private CritiqueService critiqueService; //设置当前页 private int currentPage; //username private String username; private BlogInfoService blogInfoService; public BlogInfoService getBlogInfoService() { return blogInfoService; } public void setBlogInfoService(BlogInfoService blogInfoService) { this.blogInfoService = blogInfoService; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public CritiqueService getCritiqueService() { return critiqueService; } public void setCritiqueService(CritiqueService critiqueService) { this.critiqueService = critiqueService; } public DianjiliangService getDianjiliangService() { return dianjiliangService; } public void setDianjiliangService(DianjiliangService dianjiliangService) { this.dianjiliangService = dianjiliangService; } public int getId() { return id; } public void setId(int id) { this.id = id; } public ArticleService getArticleService() { return articleService; } public void setArticleService(ArticleService articleService) { this.articleService = articleService; } public String execute() throws Exception { // 将文章设置到request范围 HttpServletRequest request = ServletActionContext.getRequest(); // 按ID查询文章 Article article = articleService.showArticle(id); // 获得用户IP String IP = request.getRemoteAddr(); // 获得当前时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String stime = sdf.format(new Date()); Date time = sdf.parse(stime); if (!dianjiliangService.isVistor(id, IP, time)) { // 点击量增加 article.setHasread(article.getHasread() + 1); } // 将更新的Article保存到数据表中 articleService.addArticle(article); //显示评论 Page page = new Page(); page.setCurrentPage(this.getCurrentPage()); page.setEveryPage(5); Result result = critiqueService.showCritiqueByPage(id, page); request.setAttribute("page", result.getPage()); request.setAttribute("allCri", result.getList()); request.setAttribute("article", article); //取得个性化设置 //通过业务逻辑组件来查询 if(username != null || !"".equals(username)) { Map session = ActionContext.getContext().getSession(); BlogInfo bloginfo = blogInfoService.getBlogInfo(username); if(bloginfo != null) { session.put("blogtitle", bloginfo.getBlogtitle()); session.put("idiograph", bloginfo.getIdiograph()); } } return this.SUCCESS; } }
12.
package com.sanqing.action; import java.io.File; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class ShowPhoto extends ActionSupport{ public String execute() throws Exception { //获得username Map session = ServletActionContext.getContext().getSession(); String username = (String) session.get("username"); //设置文件目录 String photoPath = ServletActionContext.getServletContext().getRealPath("/user/photo/" + username); //使用File封装 File fphotoPath = new File(photoPath); //获得相册目录的所有图片文件 String[] photoList = fphotoPath.list(); //将图片列表设置到request范围 HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("photoList", photoList); return super.execute(); } }
13
package com.sanqing.action; import java.util.List; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import com.sanqing.fenye.Page; import com.sanqing.fenye.Result; import com.sanqing.po.Article; import com.sanqing.rss.CreateRss; import com.sanqing.service.ArticleService; public class ShowRSS extends ActionSupport { private ArticleService articleService; public ArticleService getArticleService() { return articleService; } public void setArticleService(ArticleService articleService) { this.articleService = articleService; } public String execute() throws Exception { Page page = new Page(); //分页信息 page.setCurrentPage(0); //设置当前页为第一页 page.setEveryPage(10); //每页显示10条记录 Result result = articleService. showArticleByPage(page);//通过调用业务逻辑组件来完成查询 page = result.getPage(); List<Article> all = result.getList();//获得文章结果集 String filePath = ServletActionContext. getServletContext().getRealPath("/rss.xml");//设置订阅文件地址 CreateRss.publishRss(all, filePath);//写入订阅文件 return this.SUCCESS; } }
14.
package com.sanqing.action; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.sanqing.fenye.Page; import com.sanqing.fenye.Result; import com.sanqing.po.Article; import com.sanqing.service.ArticleService; public class ShowUserAllArticle extends ActionSupport{ private ArticleService articleService; private int currentPage; private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public ArticleService getArticleService() { return articleService; } public void setArticleService(ArticleService articleService) { this.articleService = articleService; } public String execute() throws Exception { if(username == null || "".equals(username)) { //首先要获得session Map session = ActionContext.getContext().getSession(); //获得username username = (String) session.get("username"); } //通过调用业务逻辑组件来完成查询 Page page = new Page(); page.setCurrentPage(this.getCurrentPage()); page.setEveryPage(5); Result result = articleService.showUserArticleByPage(username, page); page = result.getPage(); List<Article> all = result.getList(); List critiqueCounts = new ArrayList(); for(Article article : all) { critiqueCounts.add(articleService.getCritiqueCount(article.getId())); } //把查询到的结果保存在一个范围,request HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("all", all); request.setAttribute("page", page); request.setAttribute("critiqueCounts",critiqueCounts); return this.SUCCESS; } }
相关文章推荐
- 二代旅游网站模板程序V1使用手册(三):旅游目的地管理
- JavaWeb项目开发案例精粹-第4章博客网站系统-004Service层
- 软件产品架构师手记
- JavaWeb项目开发案例精粹-第4章博客网站系统-003Dao层
- JavaWeb项目开发案例精粹-第4章博客网站系统-002辅助类及配置文件
- JavaWeb项目开发案例精粹-第4章博客网站系统-001设计
- 网站设计配色笔记(一)
- 架构师的十项技能
- 标签嵌套规范、网站结构制作实例笔记
- 高可用系统在点评的实践与经验--讲座思考
- 没有好技术,和开不了好网站毫无关系
- 软件架构师应具备的十大特点
- 推荐一个C#调用winapi的帮助网站
- 【资源汇集.转】C++编程学习52个经典网站 强力推荐
- GPU架构变迁
- SOA 介绍
- 二代CMS旅游网站系统V1使用手册(二):同业账户及获取授权
- Orchard源码分析(1):Orchard架构
- BAT各大网站,样式初始化
- Spark系列(四)整体架构分析