- servlet就是sun公司开发动态web的一门技术
- sun在这些API中提供一个接口叫做:Servlet,如果想开发一个servlet程序,只需完成两个小步骤:
- 编写一个类,实现servlet接口
- 把开发好的Java类部署到web服务器中
把实现了servlet接口的Java程序叫做,servlet
6.2 Hello Servletservlet接口sun公司有两个默认的实现类:HttpServlet
1.建立Maven构建一个普通的Maven项目,删掉里面的src目录,在这个项目里建立moudel;这个空的工程就是Maven主工程;
2.Maven父子工程关于Maven父子工程的理解:
父项目中会有
3.Maven 环境优化servlet01
- 修改web.xml文件
- 将maven的结构搭建完整
- Java
- resource
1.编写一个普通类
2.实现Service接口,直接继承HttpService
public class HelloServlet extends HttpServlet {
//由于get和post只是请求实现的不同方式,可以互相调用,业务逻辑都一样;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//ServletOutputStream outputStream = resp.getOutputStream();
PrintWriter writer = resp.getWriter();
writer.print("hello,servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
5.编写servlet映射
为什么需要映射:写的是Java程序,但是需要通过浏览器访问,而浏览器需要连接web服务器,所以需要在web服务中注册写的servlet,还需要给他一个浏览器能够访问的路径。
hello
com.par.servlet
hello
hello
6.配置Tomcat
见5.6
注意:配置项目发布的路径就可以了
7.启动测试 6.3 servlet原理servlet是由web服务器调用,web服务器在收到浏览器请求之后,会:
1.一个Servlet可以指定一个映射路径
hello /hello
2.一个Servlet可以指定多个映射路径
hello /hello hello /hello2 hello /hello3 hello /hello4 hello /hello5
3.一个Servlet可以指定通用映射路径
hello /hello resp.sendRedirect("/re/img");//重定向 }
面试题:重定向和转发的区别?
相同点:
- 页面都会实现跳转
不同点:
- 请求转发的时候,url不会产生变化
- 重定向的时候,url地址栏会发生变化;
用户登录
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println(username+":"+password);
//注意路径问题 加后缀 否则会404
resp.sendRedirect("/re/suc.jsp");
}
Title
success!
6.7 HttpServletRequest
HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,HTTP请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获得客户端的所有信息;
1.获取前端传递参数,请求转发@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
//后台乱码问题
req.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
String[] hobbys = req.getParameterValues("hobbys");
System.out.println("*******************************");
System.out.println(username);
System.out.println(password);
System.out.println(Arrays.toString(hobbys));
System.out.println("*******************************");
//请求转发
//这里的 / 代表当前web路径
req.getRequestDispatcher("/success.jsp").forward(req,resp);
}
面试题:重定向和转发的区别?
相同点:
- 页面都会实现跳转
不同点:
- 请求转发的时候,url不会产生变化 307
- 重定向的时候,url地址栏会发生变化; 302



