JavaWeb之Servlet3.0

开发环境要求:
1. MyEclipse10.0或以上版本!
2. Tomcat7.0或以上版本!

3. JavaEE6.0应用!

1.注解代替web.xml配置文件

AServlet.java

package zh.servlet.demo;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns="/AServlet")
public class AServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	@Override
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.getWriter().print("AServlet");
	}
	
	@Override
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
	
}

AFilter.java

package zh.filter.demo;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

@WebFilter(urlPatterns={"/AServlet"})
public class AFilter implements Filter {

	@Override
	public void destroy() {
		System.out.println("AFilter挂了");
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		System.out.println("AFIlter");
		chain.doFilter(request, response);

	}

	@Override
	public void init(FilterConfig config) throws ServletException {
		System.out.println("AFilter出生了");
	}

}

AServletContextListener.java

package zh.listen.demo;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class AServletContextListener implements ServletContextListener {

	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		System.out.println("AServletContext挂了");
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		System.out.println("AServletContext出生了");
	}

}

启动Tomcat


访问:http://localhost:8080/JavaWeb2/AServlet



关闭Tomcat


2.对上传的支持

【注意】:首先给Servlet添加一个注解: @MultipartConfig

对于普通字段,使用request.getParameter("字段名")得到字段值。

对于文件类型,使用request.getPart("字段名"),得到Part实例,然后调用 Part实例方法,得到文件相关信息:

String getContentType():获取上传文件的MIME类型;
String getName():获取表单项的名称,不是文件名称;获取上传文件名称,需要从Content-Disposition头中截取!
String getHeader(String header):获取指定头的值;
long getSize():获取上传文件的大小;
InputStream getInputStream():获取上传文件的流;

void write(String fileName):把上传文件保存到指定路径;

form.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传</title>
</head>
<body>

<form action="${pageContext.request.contextPath }/AServlet" method="post" enctype="multipart/form-data">
	用户名:<input type="text" name="username"><br>
	简   历: <input type="file" name="resume"><br>
	<input type="submit" value="提交">    <input type="reset" value="重置">
</form>

</body>
</html>

AServlet.java

package zh.servlet.demo;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@MultipartConfig // Servlet3.0支持文件上传的注解
@WebServlet(urlPatterns = { "/AServlet" })
public class AServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	@Override
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	@Override
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		// 解决中文提交乱码问题
		request.setCharacterEncoding("utf-8");
		// 解决中文响应乱码问题
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();

		// 获取普通字段
		String username = request.getParameter("username");
		out.println(username + "<br>");// 杯莫停

		// 直接通过文件字段名称,获取上传文件对象Part
		Part part = request.getPart("resume");
		
		// 上传文件的字段名称
		String name = part.getName();
		out.println(name + "<br>");// resume
		
		// 上传文件类型
		String contentType = part.getContentType();
		out.println(contentType + "<br>");// image/jpeg
		
		// 上传文件大小
		long size = part.getSize();
		out.println(size + "<br>");// 33505
		
		// 获取Content-Disposition头信息,可以从此头信息中截取文件名称
		String header = part.getHeader("Content-Disposition");
		out.println(header + "<br>");// form-data; name="resume";filename="杯莫停1.jpg"
		
		// 保存上传文件到指定路径
		part.write("F://画江湖.jpg");

	}

}

访问:http://localhost:8080/JavaWeb2/form.jsp

提交后,结果:


猜你喜欢

转载自blog.csdn.net/qq_41706150/article/details/80762564