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

时间:2023-03-10 07:24:48
JavaWeb项目开发案例精粹-第4章博客网站系统-005action层

1.

 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;
} }