一、配置IDEA
1.首先选择New Project
2.勾选web项目
3.双击src进入项目结构编辑
4.在WEB-INF下创建classes,lib两个目录
5.选择上方的paths选项卡后将输出路径选择为刚刚建立的classes文件夹
6.选择最后的Dependencies后点击右侧的加号选择第一个选项
7.选择路径为之前建立的lib
8.在之后弹出的对话框中选择Jar Directory
9.点击右上角的编译配置
10.点击左上角的加号后选择Tomcat Server 里的local
10.1.如果没有tomcat,进入设置搜索tomcat然后将插件启用
11.配置Server
12.选择上方Deployment选项卡后点击右侧加号选择这个项目
13.配置完成,运行
二、搭建一个简易servlet程序
1.像普通java一样创建一个package,然后在下面创建一个新的servlet
填好名称和包名
2.先将之前写好的login的html粘贴到main.jsp中去
<%--
Created by IntelliJ IDEA.
User: 贾辉
Date: 2019/7/1
Time: 15:38
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册</title>
<style>
.zhong {
text-align: center
}
</style>
</head>
<body>
<div class="zhong">
<form method="post" action="ServletTest">
用户名:<br/>
<input type="text" name="username">
<br/> <br/> 密码:
<br/>
<input type="password" name="password">
<br/> <br/> 确认密码:
<br/>
<input type="password" name="repassword">
<br/> <br/> 年龄:
<br/>
<input type="number" name="age" min='1' max='150'/>
<br/> <br/> 性别:
<br/>
<input type="radio" name="sex" value="male" checked>男
<br/>
<input type="radio" name="sex" value="femal"/>女
<br/><br/>
<input type="submit" value="submit"/>
</form>
<div/>
</body>
</html>
使用post的形式提交到ServletTest中去
3.使用request下的getParameter方法获取数据
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username);
System.out.println(password);
(代码添加到doPost方法中)
同时修改@WebServlet,加入urlPatterns
@WebServlet(name = "ServletTest", urlPatterns = "/ServletTest")
4.运行测试
提交后
成功
5.请求转发与重定向
区别
一句话,转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程:
转发过程:客户浏览器发送http请求—-》web服务器接受此请求–》调用内部的一个方法在容器内部完成请求处理和转发动作—-》将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。
重定向过程:客户浏览器发送http请求—-》web服务器接受后发送302状态码响应及对应新的location给客户浏览器–》客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址—-》服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。
转自:https://blog.csdn.net/meiyalei/article/details/2129120
应用
首先新建loginok和loginerr两个jsp文件
修改doPost方法
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
if(username.equals("admin")&&password.equals("admin")){
//请求转发
request.getRequestDispatcher("Loginok.jsp").forward(request,response);
}
else{
//重定向
response.sendRedirect("Loginerr.jsp");
}
}
验证后均可实现跳转
三、Servlet会话跟踪
session可以在一个会话中记录所需要的若干信息
创建session对象
HttpSession session=request.getSession();//创建session对象
存入数据
session.setAttribute("mystr",str);
session和map类似,用第一个字符串映射到第二个内容上。
取出数据
String str=(String)session.getAttribute("mystr");
四、JSP
使用<% %>
包裹java代码,其他部分和HTML基本相同
应用
在登陆的doPost方法中使用
HttpSession session=request.getSession();
session.setAttribute("na",username);
记录用户名,再到登陆成功的jsp中使用
java
<%
String username=(String)session.getAttribute("na");
%>
welcome<%=username %>!
输出登陆成功的欢迎界面
五、EL语法
可以用EL表达式高效的代替java代码
示例项目源代码
https://jhcloud.top/pan/uploads/%E8%B4%BE%E8%BE%89/javaweb_1.zip