javaweb
1、servlet
1.1、servlet原理
1.2、mapping问题
1.一个servlet可以指定一个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
2.一个servlet可以指定多个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
3.一个servlet可以指定通用映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
4.默认请求路径(不进index页面)
<!--默认请求路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
5.指定一些后缀或者前缀…
<!--注意,*之前不能加/或者项目映射路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>hello/nihao.do</url-pattern>
</servlet-mapping>
6.优先级问题
指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求。
<sevlet>
<sevlet-name>error</sevlet-name>
<sevlet-class>com.sevlet.ErrorSevlet</sevlet-class>
</sevlet>
<servlet-mapping>
<servlet-name>error</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
1.3、servletContext
1、web.xml头
<?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"
metadata-complete="true">
</web-app>
2、Filter过滤器(重点)
2.1用来过滤网站的数据
- 处理中文乱码问题
- 登录验证
2.2过滤器步骤:
导包
编写过滤器
导包不要错
- chain:过滤中的所有代码,在过滤特定请求的时候都会执行
- 必须要让过滤器继续执行
- 每请求一次过滤器都会执行一次(dofilter)
- web服务器启动的时候就初始化,随时等待过滤对象
- web服务器关闭,过滤器会销毁
在web.xml中配置拦截器
3、Listener监听器
3.1步骤
- 编写监听器(创建、销毁)
实现监听器的接口,重写里面的方法
2.注册监听器和自动注销session
3.看情况是否使用
4、监听器,过滤器常用应用
4.1监听器:GUI编程中经常使用;(图形界面编程)
适配器模式:接口中方法太多,不要重写所有方法,加一层子类,就可以选择需要的方法进行重写。
4.2用户登录之后进入主页,用户注销不能进入主页
1.先写好页面,login、error、sucess
2.登录提交后跳转loginServlet(用户名是否是admin,是则重定向sucess并在session中存放用户数据,否则重定向error)
3.注销,不删除session对象,移除session中用户数据,并返回login
4.此时有问题,没有权限,也能直接访问success
使用过滤器
先强转req,resp类型(httpservlet),用会话获取会话id
判断如果为空,重定向error
5.发现session中用户数据多次使用,将他单独拿出来(util包下constant类),定义成static、final常量,会比较方便