JavaWeb
1 Servlet
1. 什么是servlet
-
一种衔接前后端的技术,本质是一种流,底层是由网络编程编写
-
service业务逻辑
-
从狭义上讲,servlet就是一个名字叫做servlet的接口
-
从广义上讲,servlet就是我们自己写的一个实现servlet接口的java类,这个类的最大特点就是它能接受请求,同时可以返回响应
2 servlet类的方法
1. service()
用来接收请求,返回响应
2. 构造方法
创建一个servlet对象
3. init()
对servlet对象进行初始化
4. destroy()
销毁该servlet对象
3 核心配置文件
- 在java web的项目中,我们需要配置web.xml的核心配置文件
<servlet>标签表示servlet,它包含了子标签
<servlet-name> ----表示servlet的名字
<servlet-class> ----表示servlet类的全类名
<servlet-mapping>标签表示和<servlet>对应的映射关系,包含子标签
<servlet-name> ----表示servlet的名字
<url-pattern> ----表示请求名,对应的请求到来,就会触发servlet类执行
4 url格式
http://ip地址:端口/web应用的名字/请求名
- 其中
http://ip地址:端口
称为web站点的根目录 web站点的根目录/web应用的名字
称为web应用的根目录- 所有请求都基于http协议
- 现在流行https协议,更加安全
5 <load-on-startup>
- 配置在
中,表示当前的servlet被创建和初始化的时机 - 如果取值为非负整数,则表示随Tomcat启动进行创建和初始化
- 注意:
- 如果取值为负数,则等于没有配多个servlet,按照取值从小到大的顺序自动创建和加载
- 在web.xml中,一个
可以对应多个
6 <url-pattern>
通配符
-
/*
<url-pattern>/*</url-pattern>
-
/
<url-pattern>/</url-pattern>
-
*.后缀名
<url-parttern>*.do</url-parttern>
7 ServletConfig
- 一个servlet的大管家类,可以获取当前servlet方方面面的信息,由tomcat创建并传入init方法中,我们可以在web.xml的
中定义 表示当前servlet的初始化参数 -
表示参数名 -
表示参数值
1. 常用方法
getInitParameter(参数名)
-------获取对应的参数值getServletName()
------获取当前servlet的名字
2. ServletContext
- 当前Web应用的大管家,可以获取当前Web应用的方方面面的信息
- 我们可以用ServletConfig对象的
getServletContext()
方法获取对象
1. 常用方法
getInitParameter(参数名)
-------获取对应的参数值getRealPath(项目结构路径)
------获得该文件部署后的绝对路径getContextPath()
-------获取web应用的根目录,其中的/
表示web站点的根目录
8 发送请求的方式
9 参数传递
1. get 请求
- url地址中石油问号分隔web应用和参数
- 参数格式:
参数名1=参数值1&参数名2=参数值2
- 如果是表单提交,则表单控件的name对应参数民,value对应参数值
- 注意:get请求有长度限制,不超过1k
2. post 请求
10 接收参数
- 在servlet的services方法中,使用
ServletRequest
对象调用getParameter(参数名)
可以得到参数值
11 返回响应
-
通过
ServletResponse
对象调用getWriter()
方法获取PrintWriter
打印流对象,然后由该打印流对象调用print()
完成打印 -
练习:在web.xml中配置两个web应用的初始化参数
- username:admin
- password:123456
- 画一个登陆页面,请用户登录
- 校验账号密码是否正确
- 在结果页面上响应
- hello:xxx
- sorry:xxx
- 注意:xxx为用户输入的用户名
public class login implements Servlet {
ServletContext sc;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
sc=servletConfig.getServletContext();
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
String username=sc.getInitParameter("username");
String password=sc.getInitParameter("password");
String usernameParam=servletRequest.getParameter("username");
String passwordParam=servletRequest.getParameter("password");
PrintWriter pw=servletResponse.getWriter();
if(usernameParam.equals(username)&&passwordParam.equals(password))
pw.print("hello,"+usernameParam);
else pw.print("sorry,"+usernameParam);
}
@O