Servlet的基本使用
@WebServlet("/HelloWorld")//域名映射,在网页中通过xx/HelloWorl访问
public class helloworld extends HttpServlet//定义一个类继承HttpServlet类表示这是一个JAVAweb容器
{
@Override
//重写service()方法并且调用doGet()方法
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOExceptiom {
req.setCharacterEncoding("UTF-8");//改变容器请求的编码格式
resp.setContentType("text/html;charset=UTF-8");//改变容器的返回编码格式
resp.setCharacterEncoding("UTF-8");
String Class_Select = req.getParameter("SELECT");//使用Servlet里的request.getParameter()方法来获取客户端输入,并且定义一个字符串来保存输入
PrintWriter out = resp.getWriter();//定义一个输出文件流,通过out文件流来进行返回数据
out.println("xxx");
在项目的目录中有一个web.xml文件,被称为部署文件,意思是覆盖Servlet的标注设置。使用类似于html
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>Hello</servlet-name>//注册的Servlet名称(你把这个Servlet项目称作什么
<servlet-class>Helloworld</servlet-class>//实体Servlet名称,你的Javaweb容器的类名称
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/Helloworld</url-pattern>//逻辑名称,地址映射,网页通过这个来访问实体
</servlet-mapping>
</web-app>
Servlet过滤器
过滤器顾名思义就是拦截请求或者响应
过滤器的作用:
1.在客户端请求后端数据后,进行过滤筛选,在访问数据之前判断是否拦截
2.在请求完后端数据后,可以进行拦截返回给客户端的响应
3.过滤器可以对request中的数据进行检查,修改
在使用过滤器之前需要对web.xml文件进行部署
过滤器通过Web.xml部署文件进行部署,然后反馈给编写的web程序,当启动web程序的时候,过滤器会给每一个过滤器创建一个实例
//注册一个过滤器
<filter>
<filter-name>hellofilter</filter-name>//你的过滤器名字
<filter-class>filtertest</filter-class>//过滤器实现类名
</filter>
//给过滤匹配URL
<filter-mapping>
<filter-name>hellofilter</filter-name>//需要部署的类名
<url-pattern>/*</url-pattern>//表示过滤器部署给所有项目
</filter-mapping>
Filter(过滤器)的执行顺序与你在web.xml中配置的顺序一致,也就是说你需要把filter写在所有servlet之前
使用过滤器之前需要调用Filter接口
然后创建一个实现过滤器的接口
import java.util.logging.Filter;
public class filtertest implements Filter {
}
使用过滤器的三种方法:
1.public void doFilter (ServletRequest, ServletResponse, FilterChain)
该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain用户访问后续过滤器。
2.public void init(FilterConfig filterConfig)
web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作(filter对象只会创建一次,init方法也只会执行一次)。开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。
3.public void destroy()
Servlet容器在销毁过滤器实例前调用该方法,在该方法中释放Servlet过滤器占用的资源。
一个基本的过滤器:
package Filter;
import javax.servlet.*;
import java.util.logging.Filter;
public class filtertest implements Filter {
//初始化过滤器
public void init(FilterConfig config) throws ServletException {
System.out.println("javaweb被执行了,过滤器实例创建");
String password = config.getInitParameter("password");//获取数据
System.out.println("你的密码是:" + password);
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException {
}
public void destroy(){
}
}