java —— Servlet 技术

Servlet 是在 java 中嵌套 html 的一项技术,这点与 JSP 刚好相反,JSP 是在 html 中嵌套 java 的一项技术。

一、Servlet

(一)前言

1、Servlet 事实上也是一个类,其添加方式与类的添加方式一样;

2、Servlet 类下有两个方法,分别是 doGet() 和 doPost(),具体的业务代码写在 doGet() 方法中即可,两个方法的调用在前端 html 中进行确定;

3、调用 Servlet 技术需要 servlet-api.jar 包,对于 web 项目,将该包直接放在 WebContent → WEB-INF → lib 文件夹即可,无需右键 Build Path → Add to Build Path。

4、在 WEB-INF 文件夹下的 web.xml 配置文件中,需要做出以下配置:

<servlet>
    <servlet-name>Servlet1</servlet-name>
    <servlet-class>com.example.servlet.Servlet1</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Servlet1</servlet-name>
    <url-pattern>/Servlet1</url-pattern>
</servlet-mapping>

(二)响应 html

public class Servlet1 extends HttpServlet {
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrinterWriter pw=response.getWriter();
    pw.println("<h1>这是一个响应</h1>");
    }
}

 如果要连接前端的请求内容,需要在前端的 html 中做出如下配置:

<form action="192.168.10.105:8080/example/Servlet1">
	account:<input type="text" name="account"><br>
	password:<input type="text" name="password"><br>
	<input type="submit">
</form>

对应地,需要在 Servlet 中做出如下编写: 

public class Servlet1 extends HttpServlet {
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     String x=request.getParameter("account");
    // x 的值就是前端 name 为 account 的文本框输入的内容;
     String y=request.getParameter("password");
    // y 的值就是前端 name 为 password 的文本框输入的内容;
    }
}

(三)上传文件

1、在 WebContent 文件夹下创建一个用于存放文件的文件夹,取名“upload”;

2、前端 html 需要做如下配置:

<form action="http://192.168.10.105:8080/example/Servlet2" method="post" enctype="multipart/form-data">
		<input type="file" name="myfile" >
		<input type="submit">
</form>
//method 方法不能用get,只能用post;
//需要添加 enctype="multipart/form-data"

3、Servlet 中 request 需要调用 .getPart() 方法,并添加 @MultipartConfig 注解:

@MultipartConfig
public class Servlet2 extends HttpServlet {	
   
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Part part=request.getPart("myfile");
//呼应前端的<input type="file">
		String formerName=part.getSubmittedFileName();
//获取文件名;
		String suffix=formerName.substring(formerName.lastIndexOf("."), formerName.length());
//获取文件后缀;
		String uploadPath=request.getServletContext().getRealPath("upload");
//获取upload的文件路径;
		String newName=UUID.randomUUID()+suffix;
//生成新的文件名;
		String newPath=uploadPath+"/"+newName;
//生成新的文件路径;
		System.out.println("the formerName is: "+formerName);
		System.out.println("the suffix is: "+suffix);
		System.out.println("the uploadPath is: "+uploadPath);
		System.out.println("the newName is: "+newName);
		System.out.println("the newPath is: "+newPath);

		FileOutputStream fos=new FileOutputStream(newPath);
		InputStream is=part.getInputStream();
		int length=0;
		byte[] b=new byte[1024];
		while((length=is.read(b))!=-1) {
			fos.write(b,0,length);
		}
		is.close();
		fos.flush();
		fos.close();
		PrintWriter pw=response.getWriter();
		pw.println("succeed");
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

  • 15
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值