public class UploadAction extends ActionSupport { private static final long serialVersionUID = 1L; private static final String CONTENT_TYPE= "text/html; charset=utf-8"; public String execute() { HttpServletResponse response = (HttpServletResponse)ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE); HttpServletRequest request = (HttpServletRequest)ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST); SingleFileUpload upload = new SingleFileUpload(); try { upload.parseRequest(request); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } String temp =ServletActionContext.getServletContext().getRealPath("/") + "upload\\temp\\"; //��ʱĿ¼ System.out.print("�ϴ�·����"+temp); String loadpath = ServletActionContext.getServletContext().getRealPath("/") + "upload\\"; //�ϴ��ļ����Ŀ¼ File file = new File(temp); if(!file.exists()) file.mkdirs(); try { upload.upload(file); response.getWriter().write(upload.getFileItem().getName()); } catch(org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException e){ // �ļ���С�������ֵ e.printStackTrace(); }catch (Exception e){ e.printStackTrace(); } return null; } } 解释每一行代码
时间: 2024-02-10 21:20:06 浏览: 57
这段代码是一个 Java 类,名为 UploadAction,它继承了 ActionSupport 类。
第 2 行和第 3 行定义了两个常量 serialVersionUID 和 CONTENT_TYPE。
execute 方法是这个类的主要方法,它在第 5 行开始定义。
在第 6 行和第 7 行中,使用 ActionContext 对象获取了 HttpServletResponse 和 HttpServletRequest 对象,这两个对象代表了 HTTP 响应和请求。
第 9 行创建了一个 SingleFileUpload 对象,用于解析上传的文件。
在第 11 行和第 12 行中,将上传文件的临时存储路径和最终存储路径分别定义为 temp 和 loadpath。
第 14 行创建了一个 File 对象,用于检查临时存储路径是否存在,如果不存在则创建。
在第 16 行至第 30 行之间的代码,是上传文件的具体实现。首先调用 SingleFileUpload 对象的 parseRequest 方法解析上传的文件,在第 23 行将上传的文件保存到临时存储路径中。如果上传的文件大小超过了指定的限制,将会抛出 SizeLimitExceededException 异常,在第 25 行至第 27 行之间的代码处理了这种情况。最终在第 29 行将上传的文件名写入 HTTP 响应中。
最后,在第 32 行返回 null,表示这个方法不需要返回任何值。
相关问题
public class UploadAction extends ActionSupport { private static final long serialVersionUID = 1L; private static final String CONTENT_TYPE= "text/html; charset=utf-8"; public String execute() { HttpServletResponse response = (HttpServletResponse)ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE); HttpServletRequest request = (HttpServletRequest)ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST); SingleFileUpload upload = new SingleFileUpload(); try { upload.parseRequest(request); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } String temp =ServletActionContext.getServletContext().getRealPath("/") + "upload\temp\"; //��ʱĿ¼ System.out.print("�ϴ�·����"+temp); String loadpath = ServletActionContext.getServletContext().getRealPath("/") + "upload\"; //�ϴ��ļ����Ŀ¼ File file = new File(temp); if(!file.exists()) file.mkdirs(); try { upload.upload(file); response.getWriter().write(upload.getFileItem().getName()); } catch(org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException e){ // �ļ���С�������ֵ e.printStackTrace(); }catch (Exception e){ e.printStackTrace(); } return null; } } 解释每一行代码
public class UploadAction extends ActionSupport {
//定义一个继承自ActionSupport的类UploadAction,用于文件上传功能
private static final long serialVersionUID = 1L;
//定义一个序列化ID,用于版本控制
private static final String CONTENT_TYPE= "text/html; charset=utf-8";
//定义一个常量CONTENT_TYPE,表示上传文件的内容类型
public String execute() {
//定义一个execute方法,用于执行文件上传操作
HttpServletResponse response = (HttpServletResponse) ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
//获取HttpServletResponse响应对象
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
//获取HttpServletRequest请求对象
SingleFileUpload upload = new SingleFileUpload();
//创建SingleFileUpload类的实例
try {
upload.parseRequest(request);
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
//解析HttpServletRequest请求对象,获取上传的文件信息
String temp =ServletActionContext.getServletContext().getRealPath("/") + "upload\temp\";
//获取临时目录存储路径
System.out.print("上传路径"+temp);
//输出上传路径
String loadpath = ServletActionContext.getServletContext().getRealPath("/") + "upload\";
//获取上传文件存储路径
File file = new File(temp);
//创建文件对象
if(!file.exists())
file.mkdirs();
//如果临时目录不存在,则创建该目录
try {
upload.upload(file);
response.getWriter().write(upload.getFileItem().getName());
} catch(org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException e){
//文件大小超过限制
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
//上传文件,将文件存储到指定路径下,返回文件名
return null;
//返回null值,表示上传完成,不进行页面跳转
}
}
//类UploadAction结束
struts2增删改查项目mysql
Struts2 是一个基于 MVC 设计模式的 Web 应用程序框架,可以用于快速开发 Java Web 应用程序,而 MySQL 是一个流行的关系型数据库管理系统,可以存储和管理数据。下面是一个简单的 Struts2 增删改查项目,使用 MySQL 作为后端数据库:
1. 创建数据库
首先需要创建一个名为 "struts2_crud" 的数据库,然后创建一个名为 "users" 的表,包含以下字段:
id INT(11) PRIMARY KEY AUTO_INCREMENT
name VARCHAR(50)
email VARCHAR(50)
password VARCHAR(50)
2. 配置 Struts2
在项目中的 "WEB-INF" 文件夹下创建一个名为 "struts.xml" 的文件,添加以下内容:
```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default">
<action name="list" class="com.example.struts2crud.action.ListAction">
<result name="success">/list.jsp</result>
</action>
<action name="add" class="com.example.struts2crud.action.AddAction">
<result name="input">/add.jsp</result>
<result name="success" type="redirectAction">list</result>
</action>
<action name="edit" class="com.example.struts2crud.action.EditAction">
<result name="input">/edit.jsp</result>
<result name="success" type="redirectAction">list</result>
</action>
<action name="delete" class="com.example.struts2crud.action.DeleteAction" method="execute">
<result name="success" type="redirectAction">list</result>
</action>
</package>
</struts>
```
此配置文件定义了四个 action,分别是 "list"、"add"、"edit" 和 "delete"。
3. 创建 Java 类
创建以下四个 Java 类,分别对应上述四个 action:
ListAction.java:
```
package com.example.struts2crud.action;
import java.util.List;
import com.example.struts2crud.dao.UserDAO;
import com.example.struts2crud.model.User;
import com.opensymphony.xwork2.ActionSupport;
public class ListAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private List<User> userList;
public String execute() {
try {
userList = new UserDAO().getAllUsers();
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
```
AddAction.java:
```
package com.example.struts2crud.action;
import com.example.struts2crud.dao.UserDAO;
import com.example.struts2crud.model.User;
import com.opensymphony.xwork2.ActionSupport;
public class AddAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private User user;
public String execute() {
try {
new UserDAO().addUser(user);
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
```
EditAction.java:
```
package com.example.struts2crud.action;
import com.example.struts2crud.dao.UserDAO;
import com.example.struts2crud.model.User;
import com.opensymphony.xwork2.ActionSupport;
public class EditAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private User user;
public String execute() {
try {
new UserDAO().updateUser(user);
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
```
DeleteAction.java:
```
package com.example.struts2crud.action;
import com.example.struts2crud.dao.UserDAO;
import com.opensymphony.xwork2.ActionSupport;
public class DeleteAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private int id;
public String execute() {
try {
new UserDAO().deleteUser(id);
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
```
4. 创建 JSP 页面
创建以下三个 JSP 页面:
list.jsp:
```
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Struts2 CRUD Example</title>
</head>
<body>
<h2>Users List</h2>
<table border="1">
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Password</th>
<th>Action</th>
</tr>
<s:iterator value="userList">
<tr>
<td><s:property value="id"/></td>
<td><s:property value="name"/></td>
<td><s:property value="email"/></td>
<td><s:property value="password"/></td>
<td>
<s:url id="editUrl" action="edit">
<s:param name="user.id" value="%{id}"/>
</s:url>
<s:url id="deleteUrl" action="delete">
<s:param name="id" value="%{id}"/>
</s:url>
<s:a href="%{editUrl}">Edit</s:a>
<s:a href="%{deleteUrl}">Delete</s:a>
</td>
</tr>
</s:iterator>
</table>
<br>
<s:url id="addUrl" action="add"/>
<s:a href="%{addUrl}">Add New User</s:a>
</body>
</html>
```
add.jsp:
```
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Struts2 CRUD Example</title>
</head>
<body>
<h2>Add New User</h2>
<s:form action="add">
<s:textfield name="user.name" label="Name"/>
<s:textfield name="user.email" label="Email"/>
<s:textfield name="user.password" label="Password"/>
<s:submit value="Save"/>
</s:form>
<br>
<s:url id="listUrl" action="list"/>
<s:a href="%{listUrl}">Back to List</s:a>
</body>
</html>
```
edit.jsp:
```
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Struts2 CRUD Example</title>
</head>
<body>
<h2>Edit User</h2>
<s:form action="edit">
<s:hidden name="user.id"/>
<s:textfield name="user.name" label="Name"/>
<s:textfield name="user.email" label="Email"/>
<s:textfield name="user.password" label="Password"/>
<s:submit value="Save"/>
</s:form>
<br>
<s:url id="listUrl" action="list"/>
<s:a href="%{listUrl}">Back to List</s:a>
</body>
</html>
```
5. 创建 DAO 类
创建一个名为 "UserDAO.java" 的 DAO 类,用于操作数据库:
```
package com.example.struts2crud.dao;
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 com.example.struts2crud.model.User;
public class UserDAO {
public static final String URL = "jdbc:mysql://localhost:3306/struts2_crud";
public static final String USER = "root";
public static final String PASSWORD = "password";
public Connection getConnection() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection(URL, USER, PASSWORD);
}
public List<User> getAllUsers() throws Exception {
List<User> userList = new ArrayList<>();
String sql = "SELECT * FROM users";
try (Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setEmail(rs.getString("email"));
user.setPassword(rs.getString("password"));
userList.add(user);
}
}
return userList;
}
public void addUser(User user) throws Exception {
String sql = "INSERT INTO users (name, email, password) VALUES (?, ?, ?)";
try (Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, user.getName());
stmt.setString(2, user.getEmail());
stmt.setString(3, user.getPassword());
stmt.executeUpdate();
}
}
public void updateUser(User user) throws Exception {
String sql = "UPDATE users SET name = ?, email = ?, password = ? WHERE id = ?";
try (Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, user.getName());
stmt.setString(2, user.getEmail());
stmt.setString(3, user.getPassword());
stmt.setInt(4, user.getId());
stmt.executeUpdate();
}
}
public void deleteUser(int id) throws Exception {
String sql = "DELETE FROM users WHERE id = ?";
try (Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setInt(1, id);
stmt.executeUpdate();
}
}
}
```
6. 运行项目
将以上代码保存到项目中,然后启动项目,访问 "http://localhost:8080/项目名/list.action" 即可看到用户列表。可以点击 "Add New User" 按钮添加新用户,点击 "Edit" 按钮编辑用户信息,点击 "Delete" 按钮删除用户。