总结下:设计struts框架,首先设计客户请求的jsp,晓得他的业务需求。然后将jsp的一些交互数据封装到ActionForm中。通过业务逻辑需求设计相应的完成此业务功能的Action,Action中将直接使用ActionForm的数据而不需要request和response,同时在完成逻辑处理后调用相应的jsp页面返回给用户。与简单servlet的不同是,将框架标准化了。
前面学习了简单的基于servlet的mvc框架模型,现在在那个的基础上乘胜追击,看了在此基础上扩展的struts框架。
struts:mvc
c:接收客户端请求,执行相应业务逻辑,把响应送回到客户端。由ActionServlet,Actionmapping对象构成。
xml文件:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
所有的以.do为扩展名的文件都由action映射到对应的servlet执行
struts-config文件:
<form-beans >
<form-bean name="addvideoForm" type="com.struts.form.AddvideoForm" />
</form-beans>
<action-mappings >
<action
attribute="addvideoForm"
input="/addVideo.jsp"
name="addvideoForm" 与此action相对应的form
path="/addvideo" 用户访问addvideo.do,此请求被转发到type(com.struts.action.AddvideoAction)处理
scope="request" ActionForm的作用范围是request
type="com.struts.action.AddvideoAction" /> 处理此请求的action
<forward name="tianen" path="/tianen.jsp"> action处理完后可以转发的选项
</action-mappings>
m:Action 和Actionform
不在需要request和response,action中 直接调用Actionform获取表单数据
v:jsp与自定义标记
实例:
1.Actionform
package com.struts.form;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
public class AddvideoForm extends ActionForm {
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
return null;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
try {
request.setCharacterEncoding("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
private String videoshowName;
private String videoInfo;
public String getVideoshowName() {
return videoshowName;
}
public void setVideoshowName(String videoshowName) {
this.videoshowName = videoshowName;
}
public String getVideoInfo() {
return videoInfo;
}
public void setVideoInfo(String videoInfo) {
this.videoInfo = videoInfo;
}
private int videoSize;
private int videoBackup;
private FormFile image;
public FormFile getImage() {
return image;
}
public void setImage(FormFile image) {
this.image = image;
}
public int getVideoSize() {
return videoSize;
}
public void setVideoSize(int videoSize) {
this.videoSize = videoSize;
}
public int getVideoBackup() {
return videoBackup;
}
public void setVideoBackup(int videoBackup) {
this.videoBackup = videoBackup;
}
}
2.Action:
package com.struts.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import com.struts.form.AddvideoForm;
import com.video.Manager;
import com.video.TestDAO;
public class AddvideoAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
AddvideoForm addvideoForm = (AddvideoForm) form;
FormFile file = addvideoForm.getImage();
if (file == null){
}
String videoName = file.getFileName();// 获取文件名
int videoSize = file.getFileSize()/1024;// 获取文件大小
String ext = videoName.substring(videoName.lastIndexOf(".") + 1, videoName.length());
// 获取文件类型,即扩展名,通过String类的substring方法截取字符串,lastIndexOf获取某个字符串最后出现的索引。
ext = ext.toLowerCase();// 全部转换成小写。
}
TestDAO test=new TestDAO();
Manager manager=new Manager();
String videoshowName=addvideoForm.getVideoshowName();
String videoInfo=addvideoForm.getVideoInfo();
int videoBackup=addvideoForm.getVideoBackup();
FormFile image=addvideoForm.getImage();
List list=manager.findNode(videoName, 1, videoSize);
String path=(String)list.get(0);
manager.addvideo(image, path,videoName);
String sql="insert into t_video(videoName,videoSize,videoBackup,showvideoName,videoInfo) " +
"values('"+videoName+"','"+videoSize+"','"+videoBackup+"','"+videoshowName+"','"+videoInfo+"')";
test.updateSql(sql);
//return null;
return (mapping.findForword("tianen"));
}
}