写servlet
1.在java中创建servlet
2.起名,起包名
3.新建的servlet有问题
1)没有servlet类
解决:在pom.xml中加入servlet映射
在pom.xml中
<!--Servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
2)不是基于注解版本的servlet
解决:找到web.xml文件
把基于配置文件的配置注释掉
在UserServlet.java中加入对注解的配置@WebServlet(“/user”):/user代表UserServlet
在web.xml中
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
//<!--<servlet>-->
// <!--<servlet-name>UserServlet</servlet-name>-->
// <!--<servlet-class>com.dlxy.servlet.UserServlet</servlet-class>-->
// <!--</servlet>-->
</web-app>
在UserServlet.java中
package com.dlxy.servlet;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/user")
public class UserServlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
}
}
4.UserServlet.java中
对于doPost,doGet把代码写在一个方法(doGet)里然后另一个方法(doPost)调用这个方法
登录:登录页面login.jsp,在页面中能输入用户名,密码,登录按钮。点完按钮将输入的用户名和密码提交给服务器Servlet(Tomact)。
服务器需要做的(登录流程):
1)读取登录页面传入的用户名和密码
2)调用实现类方法根据用户名和密码得到用户
3)如果能够拿到数据(用户信息)则表示登陆成功,跳转到成功页面
4)如果拿不到数据(用户信息),则表示登录失败,提示用户登录失败,并重新回到登录界面
第一步:在webapp中新建jsp叫login
第二步:在login.jsp中把form表单写好
form表单:可以完成数据的提交功能
action:请求的路径from表单提交后提交给servlet,接收form表单的servlet是UserServlet,我们用/user代表UserServlet。**
注:直接写/后面的路径就行
method指的是提交方法get/post(一般情况下选post)
因为表单需要提交所以必须给表单name属性
required属性表示必填项,因为我们通过用户名和密码查询:要求用户名和密码必须填写
在login.jsp中
<%--
Created by IntelliJ IDEA.
User: PC
Date: 2022/4/1
Time: 10:21
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户登录</title>
</head>
<body>
//解决第三步一个Servlet如何处理多个请求 ?flag=login
<form action="user?flag=login" method="post">
用户名:<input type="text" name="username" required><br/>
密码: <input type="password" name="password" required><br/>
<input type="submit" value="提交">
</form>
</body>
</html>
运行:
1)添加Tomact服务器
起名:Tomcat8.5
Tomcat就添加好了
2)右键运行
结果图:
from表单提交后提交给servlet,接收form表单的servlet是UserServlet
第三步:编写Servlet
在UserServlet.java中
package com.dlxy.servlet;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/user")
public class UserServlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doGet(request,response);
}
/*
* 一个Servlet如何处理多个请求
* 解决方式:在请求路径后面加入请求参数(在login.jsp中user后加?flag=login,请求参数起名:flag随便起不要用中文,不要用数字,login是参数值)
* user?flag=login - -用户登录
* user?flag=regist - - 用户注册
* */
//业务逻辑处理
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
//1.先获取flag的参数值,表单传过来的flag,对于服务器而言属于请求,Parameter是参数的意思,getParameter("flag");根据参数名是字符串(flag)获取参数值login,返回值是字符串
//如果参数名不存在时返回值为null
String flag =request.getParameter("flag");
//登录
if ("login".equals(flag)){
}
//注册
if ("regist".equals(flag)){
}
}
}