package smart.upload.struts2;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspFactory;
import javax.servlet.jsp.PageContext;import org.apache.struts2.ServletActionContext;import smart.upload.bean.User;
import smart.upload.util.TimeStamp;import com.jspsmart.upload.SmartUpload;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport {
public String upload() throws Exception{
//加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
//连接数据库,下面的root和123456是连接MySql数据库的账户
String url="jdbc:mysql://localhost:3306/jspsmartupload?user=root&password=123456&useUnicode=true&characterEncoding=utf-8";
Connection conn=DriverManager.getConnection(url);
// 获取一个pageContext实例
//PageContext pagecontext=JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true, 8192, true);
//获取SmartUpload实例
SmartUpload su=new SmartUpload();
//初始化SmartUpload 
    su.initialize(ServletActionContext.getPageContext().getServletConfig(),request,response);  //上传文件
su.upload();
//获取上传文件名
String photoName=st.getStimeStamp()+"."+su.getFiles().getFile(0).getFileExt();
//获取上传文件地址
String fileAddress=ServletActionContext.getServletContext().getRealPath("/")+"upload/"+photoName;
Map session=ActionContext.getContext().getSession();
session.put("FILEADDRESS", fileAddress);
su.getFiles().getFile(0).saveAs(fileAddress);
PreparedStatement pstmt=conn.prepareStatement("insert into image(image) values(?)");
pstmt.setString(1, photoName);
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
PreparedStatement pstmt1=conn.prepareStatement("select * from image ");
ResultSet rs1=pstmt1.executeQuery();
if(rs1.next()){
int accId=rs1.getInt(1);
String image=rs1.getString(2);
User u=new User(accId,image);
users.add(u);
}
}
return "show";
}

TimeStamp st=new TimeStamp();
public TimeStamp getSt() {
return st;
}
public void setSt(TimeStamp st) {
this.st = st;
}
private List<User> users=new ArrayList<User>();
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public HttpServletResponse getResponse() {
return response;
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
private HttpServletRequest request=ServletActionContext.getRequest();
private HttpServletResponse response=ServletActionContext.getResponse();
private String config;
public String getConfig() {
return config;
}
public void setConfig(String config) {
this.config = config;
}
}

解决方案 »

  1.   

    我是用Servlet装换成StrutS框架的 如果不能解决为空  是否在Struts2中获取pagecontext对象 希望高手指教
      

  2.   

    我是用Servlet装换成StrutS框架的 如果不能解决为空 是否在Struts2中获取pagecontext对象 希望高手指教
      

  3.   

    SmartUpload这个组件好像只能在jsp页面上用,去了解一下PageContext的作用域
      

  4.   

    struts2的response和request是要自己获取:
    protected HttpServletRequest request = ServletActionContext.getRequest(); 
    protected HttpServletResponse response = ServletActionContext.getResponse(); 
      

  5.   

    ServletActionContext.getPageContext()估计这个为空
    request.getSession().getServletContext().getPageContext()试下
      

  6.   

    request,response 这两个也没有哦,应该实现一个可以注入request, response的接口