Servlet基础知识
1.映射Servlet:
Servelt名称(相当于别名)
Servelt类的完整名称(用于反射)
Servelt映射名称(网页处理的地址)
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.lovo.web.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/userLogin</url-pattern>
</servlet-mapping>
2.Servlet URL映射路径
精确模式匹配
扩展名匹配
映射名称必须/开头
通配符
<url-pattern>/*.yuanqiu</url-pattern>
扩展名,保证安全性
请求里边用.yuanqiu结尾的都会转到这个映射
比如http://127.0.0.1:8080/web01/sefse.yuanqiu
/login/*.yuanqiu
http://127.0.0.1:8080/web01/login/sefse.yuanqiu
默认请求/ 不管是物理路径还是逻辑路径,都会经过这个处理
在没有请求路径的时候
<url-pattern>/</url-pattern>
3、Servlet声明周期:
初始化(装配,实例化)
服务
销毁
初始化和销毁只执行一次,服务多次
4、Servlet配置
<init-param>
<param-name>name</param-name>
<prarm-value>111</param-value>
</init-param>
5、导Jar包
get方法提交乱码是由web容器造成的。
userName = new String(userName.getBytes("ISO8859-1"),"utf-8");
数据库:手动提交,
con.rollback();回滚,一点出现异常,回滚失误,刚才操作无效
6、servlet应用上下文对象:ServletContext
<!-- 向整个应用上下文(Servlet运行环境,类似于JVM)中 ,设置默认参数,这是一种初始化的设置方式-->
<context-param>
<param-name>qianduoduo</param-name>
<param-value>5000000</param-value>
</context-param>
(Integer) getServletConfig().getServletContext().getAttribute("qianshaoshao");
getServletContext().setAttribute("authCode", authCode);
//将验证码放入应用上下文环境中,其他Servlet类都可以获取
ServletContext sc = getServletConfig().getServletContext();
setAtttribute("abc",1);
7、重定向:
//sendRedirect 只适合在应用程序内部完成重定向
resp.sendRedirect(projectName+"/system/success.jsp");
//下面这种就适合重定向到外部应用程序
resp.setStatus(resp.SC_MOVED_TEMPORARILY);//用于设置响应码
resp.setHeader("Location", "http://www.baidu.com");
8、servlet配置读取:
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
password = config.getInitParameter("password");
}
String value = getServletConfig().getServletContext().getInitParameter("qianduoduo");
9.页面模式是ISO8859-1 格式,转成utf-8,也可以在tomcat service.XML里边改
String userName = req.getParameter("userName");
userName = userName == null? "":userName;//三元运算符
userName = new String(userName.getBytes("ISO8859-1"),"utf-8");
10.属性的范围:request<session<Servletcontext
范围越大,服务器需要维护所需资源更多,所以需求以下尽量小,可以用req
用debug模式下调试的时候,只要不是添加类,添加修改方法名,可以不用停止运行,保存后直接用
方法里修改的东西,可以不用停