看见别人网站上都是静态页面,心里痒痒的,昨天晚上自己试着写了一下
不过只能写出非常简单的一部分,在静态页面里分页还不会做,还有待研究
NewsForm.java
1
/**//*
2
* Generated by MyEclipse Struts
3
* Template path: templates/java/JavaClass.vtl
4
*/
5
package com.news.form;
6
7
import javax.servlet.http.HttpServletRequest;
8
import org.apache.struts.action.ActionErrors;
9
import org.apache.struts.action.ActionForm;
10
import org.apache.struts.action.ActionMapping;
11
12
/** *//**
13
* MyEclipse Struts
14
* Creation date: 05-12-2008
15
*
16
* XDoclet definition:
17
* @struts.form name="newsForm"
18
*/
19
public class NewsForm extends ActionForm
{
20
/**//*
21
* Generated fields
22
*/
23
24
/** *//** title property */
25
private String title;
26
27
/** *//** content property */
28
private String content;
29
30
/** *//** author property */
31
private String author;
32
33
/** *//** id property */
34
private Integer id;
35
36
/** *//** type property */
37
private String type;
38
39
/**//*
40
* Generated Methods
41
*/
42
43
/** *//**
44
* Method validate
45
* @param mapping
46
* @param request
47
* @return ActionErrors
48
*/
49
public ActionErrors validate(ActionMapping mapping,
50
HttpServletRequest request)
{
51
// TODO Auto-generated method stub
52
return null;
53
}
54
55
/** *//**
56
* Method reset
57
* @param mapping
58
* @param request
59
*/
60
public void reset(ActionMapping mapping, HttpServletRequest request)
{
61
// TODO Auto-generated method stub
62
}
63
64
/** *//**
65
* Returns the title.
66
* @return String
67
*/
68
public String getTitle()
{
69
return title;
70
}
71
72
/** *//**
73
* Set the title.
74
* @param title The title to set
75
*/
76
public void setTitle(String title)
{
77
this.title = title;
78
}
79
80
/** *//**
81
* Returns the content.
82
* @return String
83
*/
84
public String getContent()
{
85
return content;
86
}
87
88
/** *//**
89
* Set the content.
90
* @param content The content to set
91
*/
92
public void setContent(String content)
{
93
this.content = content;
94
}
95
96
/** *//**
97
* Returns the author.
98
* @return String
99
*/
100
public String getAuthor()
{
101
return author;
102
}
103
104
/** *//**
105
* Set the author.
106
* @param author The author to set
107
*/
108
public void setAuthor(String author)
{
109
this.author = author;
110
}
111
112
/** *//**
113
* Returns the id.
114
* @return Integer
115
*/
116
public Integer getId()
{
117
return id;
118
}
119
120
/** *//**
121
* Set the id.
122
* @param id The id to set
123
*/
124
public void setId(Integer id)
{
125
this.id = id;
126
}
127
128
public String getType()
{
129
return type;
130
}
131
132
public void setType(String type)
{
133
this.type = type;
134
}
135
}
NewsAction.java
1
/**//*
2
* Generated by MyEclipse Struts
3
* Template path: templates/java/JavaClass.vtl
4
*/
5
package com.news.action;
6
7
import java.io.FileInputStream;
8
import java.io.FileNotFoundException;
9
import java.io.FileOutputStream;
10
import java.io.IOException;
11
import java.util.Calendar;
12
13
import javax.servlet.http.HttpServletRequest;
14
import javax.servlet.http.HttpServletResponse;
15
import org.apache.struts.action.Action;
16
import org.apache.struts.action.ActionForm;
17
import org.apache.struts.action.ActionForward;
18
import org.apache.struts.action.ActionMapping;
19
20
import com.news.Tools.Chinese;
21
import com.news.dao.NewsDao;
22
import com.news.form.NewsForm;
23
24
/** *//**
25
* MyEclipse Struts
26
* Creation date: 05-12-2008
27
*
28
* XDoclet definition:
29
* @struts.action path="/news" name="newsForm" input="/news_add.jsp" scope="request" validate="true"
30
* @struts.action-forward name="news_add_ok" path="/news_add_ok.html"
31
*/
32
public class NewsAction extends Action
{
33
/**//*
34
* Generated Methods
35
*/
36
37
/** *//**
38
* Method execute
39
* @param mapping
40
* @param form
41
* @param request
42
* @param response
43
* @return ActionForward
44
* @throws IOException
45
*/
46
public ActionForward execute(ActionMapping mapping, ActionForm form,
47
HttpServletRequest request, HttpServletResponse response) throws IOException
{
48
NewsForm newsForm = (NewsForm) form;
49
NewsDao nd = new NewsDao();
50
Chinese c = new Chinese();
51
String title = c.toChinese(newsForm.getTitle());
52
String author = c.toChinese(newsForm.getAuthor());
53
String content = c.toChinese(newsForm.getContent());
54
55
String filePath = "";
56
String template = "module/template.htm";
57
filePath = request.getRealPath("/")+template;
58
System.out.println(filePath);
59
String templateContent="";
60
FileInputStream fileinputstream = new FileInputStream(filePath);//读取模块文件
61
int lenght = fileinputstream.available();
62
byte bytes[] = new byte[lenght];
63
fileinputstream.read(bytes);
64
fileinputstream.close();
65
templateContent = new String(bytes);
66
templateContent=templateContent.replaceAll("###title###",title);
67
templateContent=templateContent.replaceAll("###content###",content);
68
templateContent=templateContent.replaceAll("###author###",author);//替换掉模块中相应的地方
69
// 根据时间得文件名
70
Calendar calendar = Calendar.getInstance();
71
String filename = String.valueOf(calendar.getTimeInMillis()) +".html";
72
filename = request.getRealPath("/")+"Html/news/"+filename;//生成的html文件保存路径
73
FileOutputStream fileoutputstream = new FileOutputStream(filename);//建立文件输出流
74
byte tag_bytes[] = templateContent.getBytes();
75
fileoutputstream.write(tag_bytes);
76
fileoutputstream.close();
77
String url = "Html/news/"+String.valueOf(calendar.getTimeInMillis())+".html";
78
String type = c.toChinese(newsForm.getType());
79
80
nd.addNews(title, author, content,url,type);
81
return mapping.findForward("news_add_ok");
82
}
83
}
template.html
1
<html>
2
<head>
3
<title>###title###</title>
4
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
5
</head>
6
<body>
7
标题:###title###<br/>
8
作者:###author###<br/>
9
内容:###content###<br/>
10
</body>
11
</html>
还有部分文件就不贴出来了
这个确实能够把刚添加的数据变成.html文件,也能记录在数据库中,只要再写一个新的页面去读取数据库里存放的路径就能找到相对应的文件,不过还有一点没做好,我不知道怎么删除,如果在管理新闻信息的时候,我把数据库里的某一条记录给删除掉了,那么在服务器上想对应的某一个文件就要跟着删除,这个确实不知道怎么实现了。我有想过在生成html文件的时候把它在服务器的实际路径也给记录到数据库中去,然后删除的时候可以直接找到这个路径并且删除文件,因为还没时间试,所以不知道实现起来是否有困难。
在生成的静态页面中分页也是件麻烦事,判断用户是否登陆也不知道怎么用,毕竟是静态页面,它不能处理逻辑。。。哪个高手知道的,希望能帮小弟解决