JavaWeb——Servlet项目(一)

服务端与客户端之间进行表单提交

1.什么是Servlet?

       Servlet 是用Java编写的服务器端程序,工作在服务端的一个API接口,通过该接口可以接收用户发送的HTTP请求,并进行处理,然后响应给客户端。

2.使用eclipse创建一个Servlet

(1) 创建一个动态Web项目,命名为Servlet_test1,创建方法见笔记Java——eclipse环境中配置tomcat中的第3点,
在这里插入图片描述
在这里插入图片描述
(2) 修改项目的Build Path…引入apache tomcat 的web库,确保Servlet可用(servlet是JavaWeb特有的,JavaSE中没有,JavaWeb特有的jar包由tomcat提供,如servlet)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3) 创建表单页面 login.html
在这里插入图片描述
在这里插入图片描述
(4) 创建一个Servlet,注意,该Servlet要继承HttpServlet,并重写其servlet方法(注:这一步停留在重写servlet方法,重写的方法中的内容是在下面第(6)步完成)
在这里插入图片描述
在这里插入图片描述
(5) 在web.xml中为Servlet配置映射请求,确保表单可以向Servlet提交请求(在表单form的action属性中指定Servlet地址,method属性为post,详情见上方图片中的 login.html)
在这里插入图片描述
(6) 在Sevlet的service方法中,接收表单数据,并进行处理和响应(见上图中的第(4)步)
      在接收表单数据时,设置 request.setCharacterEncoding(“UTF-8”);
      在向客户端响应之前,设置response.setContentType("text/html;charset=“UTF-8”);
(7) 浏览

login.html代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2>用户登录</h2>
	<hr />
	<form action="login" method="post">
		账号:<input type="text" name="account" /><br />
		密码:<input type="password" name="pwd" /><br />
		<input type="submit" value="提交" />
	</form>
</body>
</html>

LoginServlet.java代码:

package com.aiit.servlet_test1;

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

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

//接收用户提交的登录信息
public class LoginServlet extends HttpServlet {
    
    

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
		//设置请求对象支持中文编码
		request.setCharacterEncoding("UTF-8");
		
		
		String account = request.getParameter("account");
		String pwd = request.getParameter("pwd");
		System.out.println("account:"+account);
		System.out.println("pwd:"+pwd);
		
		//设置response响应的文档类型和编码
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter pw = response.getWriter();
		//假设合法的账号和密码分别是admin和123
		//判断登陆用户的合法性
		if(account.equals("admin") && pwd.equals("123")) {
    
    
			//System.out.println("合法用户");
			//向客户端响应内容,合法用户
			
			//1.通过response获得指向客户端的打印流(输出流)
			pw.println("<h2>合法用户</h2>");
			
		}else {
    
    
			//System.out.println("非法用户");
			//向客户端响应内容,非法用户
			pw.println("<font color='red'>非法用户</font>");
		}	
	}
}

web.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
	
	<!-- 配置Servlet的映射路径 -->
	<servlet>
		<servlet-name>loginServlet</servlet-name>
		<servlet-class>com.aiit.servlet_test1.LoginServlet</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>loginServlet</servlet-name>
		<url-pattern>/login</url-pattern>
	</servlet-mapping>  
</web-app>

运行结果为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:

①关于编码方式这里,我这里使用的是 UTF-8,将在eclipse中的所有项目全部以 UTF-8的形式来编码,设置方法为:
在这里插入图片描述
②本例中使用的是post方法,在进行 UTF-8编码方式的设置
request.setCharacterEncoding(“UTF-8”); 后,post方法,不管传递的是中文还是因为英文,都不会出现乱码;但是get方法在进行UFT-8编码设置后,只有英文不会出现乱码,中文依旧会乱码,具体分析见下一节笔记。

3.总结:

        html -> 创建继承于HttpServlet的servlet类并重写service方法 -> web.xml映射 servlet类 ->在service方法中接受请求,并处理和响应。

猜你喜欢

转载自blog.csdn.net/lucky_shi/article/details/105428067