Get方式出现乱码解决方法:
- 一个一个改 new String (对象.getBaytes(“iso-8859-1”),“utf-8”);每个变量转一次
- 修改server.xml 统一gat编码URIEncoding=“UTF-8”
Post方式解决乱码:
- Request.setCharacterEncoding(“utf-8”);
Response 响应对象
Void addCookie(Cookie cookie) 服务端向客户端正价Cookie对象
Void sendRedirect(String location) throws IOException;页面跳转的一种方式
重定向 :response.sendRedirect(“success.jsp”)
请求转发:request.getRequestDispatcher(“”).forword(qequest,response)地址栏不变,数据保留
Void setContetType(String type);设置服务响应的编码,设置服务端的content
Cookie (客户端,不是内置对象):由服务端产生,在发送给客户端保存。相当于本地缓存
Cookie cookie = new Cookie(“key”,value);
服务端准备Cookie: response.addCookie(Cookie cookie)
页面跳转(页面转发,重定向)
客户端获取Cookie: request.getCookies(); 一次性拿到全部Cookie
Cookie cookie = request.getCookies();
For(Cookie cookie:cookies){
Out.printf(cookie.getName()+cookie.getValue);
}
1.发送Cookie:
String name = request.getParameter("uname");
out.print("欢迎您"+name);
Cookie c = new Cookie("name",name);
Set
response.addCookie(c);
request.getRequestDispatcher("show.jsp").forward(request, response);
2.遍历Cookie:
Cookie[] name = request.getCookies();
for(Cookie cookie:name){
if(cookie.getName().equals("name")){
uname = cookie.getValue();
}
}
内置对象 session:会话
- 浏览网页:开始--结束
- 购物:浏览、付款、退出
Session机制:
客户端第一次请求服务端时,服务端会自动产生一个session对象(保存客户端的信息);
并且每个session都会有一个唯一的sessionID(用于区分其他session),服务端会产生一个cookie,并且该cookie的name=JSESSIONID,value=服务端sessionID,服务端会在响应客户端的同时将该cookie发送给客户端,至此客户端就有了个cookie(jsessionID),客户端和服务端就可以一一对应。
第n次请求时,服务端会根据客户端cookie中的JSESSIONID,去匹配(判断cookie JSESSIONID 和session sessionID)是否一致。
设置Session值:
<%
String name = request.getParameter("uname");
String passWord = request.getParameter("pwd");
session.setAttribute("name", name);
session.setAttribute("pass", passWord);
request.getRequestDispatcher("Wel.jsp").forward(request,response);
%>
获取Session值:
<%
String Name = (String)session.getAttribute("name");
String Pass = (String)session.getAttribute("pass");
out.print("欢迎您"+Name);
out.print(Pass);
%>
注销Session:
Session.invalidate( );//session失效
内置对象Application.getContextPath()虚拟路径
pageContext: set(get)Attribute();只对当前页面有效
Request: 同一次请求有效,请求转发有效,重定向无效
Session 同一次会话有效(切换浏览器无效)
Application:整个项目运行期间有效
*
*
*
*
*
*
JDBC
- 导入jar包,加载具体的驱动类。2. 与数据库建立连接。3.发送sql并执行4.处理结果集
private static final String URL="jdbc:mysql://localhost:3306/fooddb?useUnicode=true&setcharacterEncoding=utf-8";
private static final String USERNAME="root";
- private static final String PWD="root";
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(URL,USERNAME,PWD);
stmt = connection.createStatement();
int count = stmt.executeUpdate(sql);
PrepareStatement为Statement的子类,建议使用。
- 编码简单
- 有效避免SQL注入
- 比较高效,无需再每次循环执行一次SQL
*
*
*
PrepareCall 设置存储过程:
Cstmt=Conn.prepareCall(“ { call addTwoNum(?,?,?)}”);
Cstmt.setXXX(1,20);
Cstmt.registeroutParameter(3,types.INTGER)
Cstmt.execute();
Cstmt.getXXX(.);
*
*
*
处理CLOB/BLOB类型:
BLOB是按二进制来存储(一切文件)的,而CLOB是可以直接存储文字(TEXT)的
通过jdbc存储路径,然后根据io操作处理
Javabean(就是一个类)的作用:1.减轻jsp的复杂度2.提高了代码的复用(以后任何地方的登录,都可以直接调用logindao)
定义:满足1必须是public修饰的类,public无参构造
2所有属性都是private,并且提供set/get
一共两种,处理数据和处理逻辑
MVC设计模型
- Model:实现功能,用javabean来实现(dao)
- View:表单,表格,js/css/html/js,用于显示与用户进行交互
- Controller :分发器 接受请求,将请求转发到模型进行处理;模型处理完成后,再将处理的结果返回请求页。一般用servlet来实现
*
*
*
Servlet3.0 需要编写注解 @WebServlet(“/WebServlet”) 不需要再web.xml
/代表的路径 在web.xml中/代表项目根路径 http://localhost:8080/servlet名/
Jsp中的/代表服务器根路径 http://localhost:8080/
EL表达式:
点操作符:${requestScope.student.address}
中括号操作符${requestScope[“student”][“address”]} 功能更加强大,有以后特殊标点,可以获取变量值入伙不加引号则是变量,可以获取数组元素${requestScope.hobbies[2]}
El表达式的隐式对象
A.作用域访问对象:pageScope,requestScope,sessionScope,applicationScope,如果不指定,则会根据默认的顺序,从小到大的顺序,依次取值
B.参数访问对象:获取表单数据(request.getParameter() ${param.uname}、request.getParameterValues()数组${paramValues.hobbies})
C.JSP隐式对象
PageContext {$pageContext.request}= pageContext.getRequest() senssion /response
等价
<c:set var=“变量名” value=“变量值” scope=“四个范围对象的作用域”>
<c:set target=“对象” property=“对象的属性” value=“赋值”>
<c:set var="name" value="first" scope="request"/>
<c:out value="${requestScope.nam}" default="不存在" />
<c:remove var=”” scope=”request”>删除属性
EL表达式注意空格
过滤器链:可以配置多个过滤器,过滤器的先后顺序是由<filter-mapping>的位置决定
监听器
- 编写监听器
- 配置web.xml