最最入门版的servlet,前后端连接
servlet开发思路流程for
- 1.首先要由配置文件,因为servlet需要初始化(否则前端跳不到后端来)
- 2.根据业务(前端页面)需求写后端
-
2.1写客户端请求页面
-
2.2写客户端响应页面
-
2.3写后台处理前端发过来的数据(登录页面login),处理完再转发到前端去(登录成功跳转到主页面index)
-
1.编写配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>Day30</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!--配查用户注servlet -->
<servlet>
<!--这里是去找一个名字叫reg的mapping(映射) -->
<servlet-name>reg</servlet-name>
<!--这里是需要由外部连接的java类的路径-->
<servlet-class>com.etime.Regiest</servlet-class>
</servlet>
<!--创建映射-->
<servlet-mapping>
<!--给这个映射命名为reg -->
<servlet-name>reg</servlet-name>
<!--这里写他要由哪个url路径来访问他 -->
<url-pattern>/reg</url-pattern>
</servlet-mapping>
</web-app>
2.编写前端,写好讲好传入后端的数据
1.登录页面(html)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户登录页面</title>
</head>
<body>
<h3>用户登录</h3>
<!--用绝对路径的方法来提交 /项目名/路径 -->
<form action="/Day30/reg" method="post">
<!--为了方便测试写的一个value默认值 -->
<!--这里的name属性很重要,后台需要靠这个来确定获取哪个文本框的值 -->
昵称:<input type="text" name="username" value="zhangsan"><br/>
密码:<input type="password" name="pwd" value="123456"><br/>
<input type="submit" value="提交">
</form>
</body>
</html>
2.接收数据页面(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>
<!--el表达式,可以获取地址栏的信息用${param.想要获取信息的字段名}-->
<h1>欢迎${param.username}登录</h1><br/>
<h1>您的密码是:${param.pwd}</h1><br/>
</body>
</html>
3.编写类,后台处理数据
package com.etime;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Regiest extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 告知客户端使用哪种码表
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
// 使用request的getParameter方法获取到前端提交来的数据
//这里getParameter方法里的参数要和前端文本框里的name属性的值一一对应
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
// 使用response的sendRedirect方法来跳转页面(重定向)
// 一个全新的url,打开一个全新的页面
// (会乱码)
response.sendRedirect("/Day30/index.jsp?username=" + username + "&pwd=" + pwd);
// 相对的还有一个请求转发(forward)地址栏不变,站内转发
// 不会乱码
// RequestDispatcher requestDispatcher =
// request.getRequestDispatcher("/index.jsp?username="+username+"&pwd="+pwd);
// requestDispatcher.forward(request, response);
//request.setAttribute("stu", stu);
//request.getRequestDispatcher("/index.jsp").forward(request, response);
}
}
运行截图
这是请求重定向:
这是请求转发:
这两种方式的地址栏有区别
请求转发是一个像服务器请求的新的url
请求重定向是在原有的基础上,将请求自动跳转到另一个页面,不经过服务器,地址栏不变,站内转发。
结尾
至此就是一个及其简陋的使用servlet实现前后端连接