javaweb1:实现项目全局编码过滤器功能 2:实现登录过滤器功能 3:在商品列表上增加个“添加”按钮,打开一个页面,里面有表单(某个商品),单击添加功能,将商品信息进行添加后进入到商品展示列表展示添加商品后的页面,实现商品图片的上传功能。(扩充:单击按钮打开利用bootstrap创建的模态框,模态框中有个商品表单,单击添加,商品添加成功后回到商品展示列表中)
时间: 2023-12-08 11:03:03 浏览: 83
北京动力节点-专题06-过滤器.pdf
好的,我来回答你的问题。
1. 实现全局编码过滤器功能
要实现全局编码过滤器功能,可以在 web.xml 文件中配置一个字符编码过滤器。具体步骤如下:
- 在 web.xml 文件中添加以下代码:
```
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>com.example.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
```
- 创建一个 EncodingFilter 类,代码如下:
```
public class EncodingFilter implements Filter {
private String encoding;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("encoding");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
@Override
public void destroy() {
encoding = null;
}
}
```
2. 实现登录过滤器功能
要实现登录过滤器功能,可以在 web.xml 文件中配置一个登录过滤器。具体步骤如下:
- 在 web.xml 文件中添加以下代码:
```
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.example.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
```
- 创建一个 LoginFilter 类,代码如下:
```
public class LoginFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
HttpSession session = req.getSession(false);
if (session == null || session.getAttribute("user") == null) {
resp.sendRedirect("/login.jsp");
} else {
chain.doFilter(request, response);
}
}
@Override
public void destroy() {
}
}
```
3. 在商品列表上增加“添加”按钮,并实现添加商品功能和图片上传功能
要在商品列表上增加“添加”按钮,并实现添加商品功能和图片上传功能,可以按照以下步骤进行:
- 在商品列表页面上添加一个“添加”按钮,代码如下:
```
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#addProductModal">添加</button>
```
这里采用了 Bootstrap 模态框来实现添加商品的功能。
- 创建一个 add.jsp 页面,代码如下:
```
<div class="modal fade" id="addProductModal" tabindex="-1" role="dialog" aria-labelledby="addProductModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="/add" method="post" enctype="multipart/form-data">
<div class="modal-header">
<h5 class="modal-title" id="addProductModalLabel">添加商品</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label for="name">商品名称</label>
<input type="text" class="form-control" id="name" name="name">
</div>
<div class="form-group">
<label for="price">商品价格</label>
<input type="text" class="form-control" id="price" name="price">
</div>
<div class="form-group">
<label for="image">商品图片</label>
<input type="file" class="form-control-file" id="image" name="image">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
<button type="submit" class="btn btn-primary">添加</button>
</div>
</form>
</div>
</div>
</div>
```
这里采用了 Bootstrap 模态框来展示一个表单,用户可以在这个表单中输入商品信息和上传商品图片。
- 创建一个 AddServlet 类,代码如下:
```
public class AddServlet extends HttpServlet {
private ProductService productService = new ProductService();
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");
String price = req.getParameter("price");
Part imagePart = req.getPart("image");
InputStream imageInputStream = imagePart.getInputStream();
byte[] imageBytes = IOUtils.toByteArray(imageInputStream);
Product product = new Product(name, Double.parseDouble(price), imageBytes);
productService.addProduct(product);
resp.sendRedirect("/list.jsp");
}
}
```
以上代码中,AddServlet 是一个添加商品的 Servlet,它接收 POST 请求,从请求参数中获取商品信息和商品图片,将商品信息添加到数据库中,然后重定向到商品列表页面。
希望我的回答对你有所帮助。如果你还有其他问题,可以继续问我哦~
阅读全文