用serverlet进行处理如果价格低于50打九折,高于50打八折将图书信息及打折后的信息在转发后页面显示给用户
时间: 2024-10-13 14:05:53 浏览: 11
要使用Java Servlet实现这样的功能,首先你需要创建一个Servlet来接收请求并处理折扣逻辑。以下是一个简单的示例,假设你已经有了一个`BookInfo`类,其中包含书籍的价格、名称等属性:
```java
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class DiscountedPriceServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 假设request参数包含书本信息(例如id或名称)
String bookId = request.getParameter("bookId"); // 或者从数据库获取
// 假设bookRepository是你用来查询书籍的方法
BookInfo book = bookRepository.findById(bookId); // 从这里获取实际价格
double originalPrice = book.getPrice();
if (originalPrice < 50) {
double discountedPrice = originalPrice * 0.9; // 打九折
} else {
double discountedPrice = originalPrice * 0.8; // 打八折
}
// 设置响应头,如需返回JSON数据,可以用StringWriter代替response.getWriter()
response.setContentType("application/json");
response.setHeader("Content-Disposition", "attachment; filename=discounted_book_info.json");
try (PrintWriter out = response.getWriter()) {
out.println("{");
out.print("\"bookName\": \"");
out.print(book.getName());
out.print("\",");
out.print("\"originalPrice\": ");
out.print(originalPrice);
out.print(",\"discountedPrice\": ");
out.print(discountedPrice);
out.println("}");
}
}
}
```
在这个例子中,`doPost`方法用于处理HTTP POST请求。你需要根据实际情况替换`bookRepository.findById`,这通常是一个对数据库的操作,返回`BookInfo`对象。
然后,在前端(通常是JSP或Angular/React等)你可以像这样发送请求:
```html
<!-- JSP 示例 -->
<form action="/DiscountedPriceServlet" method="post">
<input type="hidden" name="bookId" value="${bookId}"> <!-- 替换为真实的书本ID -->
<button type="submit">查看折扣</button>
</form>
<!-- AJAX 示例 (用jQuery为例) -->
<script>
$.ajax({
url: "/DiscountedPriceServlet",
type: "POST",
data: { bookId: "your-book-id" }, // 替换为实际的书本ID
success: function(data) {
console.log(data); // 这里会打印打折后的书本信息
},
error: function() {
console.error('Failed to calculate discount');
}
});
</script>
```
记得设置服务器端路由指向这个Servlet。完成后,当用户提交带有书本ID的表单时,他们会在转发后页面看到打折后的书籍信息。
阅读全文