目录
1.Servlet简介
1.1 Servlet概述
1.2 HelloServlet
1.3、Servlet原理
1.4 Mapping问题
1.5 ServletContest
1.6 HttpServletResponse
1.6.1 简单分类
1.6.2 常见应用
1.6.3 验证码功能
1.6.4 实现重定向
1.7 HttpServletRequest
1.7.1 获取前端传来的参数
1.Servlet简介
1.1 Servlet概述
1. servlet就是sun公司开动态web的一门技术
2.sun公司在这些API中提供了一个接口叫做:servlet,如果想开发一个servlet程序,只需要完成两个小步骤:
(1)编写一个类,实现servlet接口
(2)把开发好的Java类部署web服务器中
把实现了servlet接口的java程序叫做:servlet
1.2 HelloServlet
Servlet接口Sun公司有两个默认的实现类:HttpServlet,GenericServlet
1.构建一个普通的Maven项目,删掉里面的src目录,这个空的工程就是Maven主工程。
2.关于Maven父子工程的理解:
父项目中会有:
servlet-01
子项目会有:
JavaWebStudy com.liu 1.0-SNAPSHOT
父项目中的java子项目可以直接使用
son extends father
3.Maven环境优化
1.将web.xml为最新的
2.将maven的结构搭建完整
4.编写一个Servlet程序
1.编写一个普通类
2.实现servlet接口,这里我们直接继承HttpServlet
ps:ctrl+鼠标左键(查看源码)
public class HelloServlet extends HttpServlet {
//由于get或者post只是请求实现的不同方式,可以互相调用,业务逻辑都一样
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer=response.getWriter();//响应流
writer.print("Hello Servlet");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
5.编写Servlet的映射
为什么需要映射:我们写的是JAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的Servlet,还需要给他一个浏览器能够访问的路径。
HelloServlet
com.liu.servlet_01.HelloServlet
HelloServlet
/hello
6.配置Tomcat
注意:配置项目发布的路径就可以了。
7.启动测试,OK
1.3、Servlet原理
1.4 Mapping问题
1.一个Servlet可以指定一个映射路径
HelloServlet com.liu.servlet_01.HelloServlet
2.一个Servlet可以指定多个映射路径(这几个路径指向同一个页面)
HelloServlet /hello HelloServlet /hello2 HelloServlet /hello3
3.一个Servlet可以指定通用映射路径
HelloServlet /hello //重定向 response.sendRedirect("/responseStudy/image"); }
面试题:请你聊聊重定向和转发的区别?
相同点:页面都会实现跳转。
不同点:
请求转发的时候,URL不会发生变化。307
重定向的时候,地址栏会发生变化。302
1.7 HttpServletRequest
HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,Http请求中的所有信息会被封锁到HttpServletRequest,通过这个HttpServletRequest的方法,获取客户端的所有信息。
1.7.1 获取前端传来的参数
ps:解决中文问题的代码,需要写在输出前面,不然会不起作用。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//解决中文乱码问题
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String[] hobbys = request.getParameterValues("hobbys");
System.out.println("--------------------------------");
System.out.println(username);
System.out.println(password);
System.out.println(Arrays.toString(hobbys));
System.out.println("--------------------------------");
//请求转发
//这里的 / 代表当前的web应用
request.getRequestDispatcher("/success.jsp").forward(request,response);
}



