您的位置:首页 > 运维架构 > 网站架构

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

2016-03-26 17:11 696 查看
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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: