文章目录
MVC
M:Model 模型层,数据库底层操作和数据封装
V:View 视图层,获得模型层提供的数据,并在交互页面(jsp)进行展示
C:Control 控制层,进行后台业务处理,模块调用,路径导航等
pojo类的定义:
- 1、共有私有的属性
- 2、公共静态非静态方法
- 3、对外访问属性的方法
- 4、空构造 全构造(不带id)完成实例化
- 5、重写toString()(非必须)
JSP:java server pages
服务页面 在HTML页面中内嵌java
404:页面找不到 往往是URL指引的资源不存在,一般处理方法:检查路径 检查防火墙 检查其他拦截设备 检查…
支持中文的编码
- UTF-8 全球
- gbk:简体 繁体 big 繁体 gb2312 简体
jsp组成
- 1、小脚本<% java语言%> 页面中的一段小程序 out.print()
<%
int a=1;
int b=2;
int c=a*b;
out.println("<font color='red' size='5'>");
out.println("计算结果:"+c);
out.println("</font>");
%>
- 2、声明:<%!%> 声明变量
<!% String name="zhang"; %>
- 3、表达式<%=内容%> 输出
<%="zhang"%>
<%=name%>
- 4、指令:<@% %> 引入外部资源
<@% page language="java" import="java.util.*" %> 导包
- 5、标准动作
- 6、内置对象
- 7、EL
- 8、JSTL
服务器跳转和重定向
- 服务器跳转:server.jsp----实际页面:error.jsp 多了一层request
- 重定向跳转:error.jsp----实际页面:error.jsp
- 只能使用一个,不能同时使用
response.sendRedirect("error.jsp");//重定向页面,可以让最终响应页面发生变化
request.getRequestDispatcher("error.jsp").forward(request,response);//服务器跳转
jsp内置对象
jsp页面中内置类或者接口对象 可以直接使用
- 1、page:当前页面对象,相当于this
- 2、pageContext:当前页面存储空间,可以存变量
- 3、config:提供一种可以访问的配置文件路径
- 4、exception:页面出错时,产生的错误信息对象
- 5、out:java.io.PrintWriter类的对象
- 6、request:请求 (用户向服务器发出的一次访问请求)
- 7、response:响应 (服务端向客户端反馈的一次响应)
- 8、session:会话 请求和响应为一次会话
- 9、application:应用 提供公共访问区域(常用来计算流量和在线数)
- 10、cookie:计算机里存储基本信息的(密码。。。)
get:通过URL传值来提交数据快捷但不安全,post与此相反
URL超链接传递的参数和表单提交的方式一致
request
<%
session.setAttribute("name1","ruirui");
request.getSession().setAttribute("name2","zhang");
%>
<form action="server.jsp" method="post">
<input type="text" id="username" name="name"/>
<input type="submit" value=" 提交 ">
</form>
获取连接客户端的地址信息:<%=request.getRemoteAddr() %><br>
获取连接客户端的主机信息:<%=request.getRemoteHost() %><br>
获取连接客户端的端口信息:<%=request.getRemotePort() %><br>
获取访问的项目名:<%=request.getContextPath() %><br>
获取访问的类型:<%=request.getContentType() %><br>
获取服务的协议:<%=request.getScheme() %><br>
获取服务的ip:<%=request.getServerName() %><br>
获取服务的端口:<%=request.getServerPort() %><br>
获取连接请求的地址信息(绝对):<%=request.getRequestURL() %><br>
获取连接请求的地址信息(相对):<%=request.getRequestURI() %><br>
获取参数:<%=request.getParameter("name") %><br>//获取表单提交的参数
获取键值对:<%=session.getAttribute("name1") %><br>
获取get方法的值:<%=request.getParameter("sex") %><br>
设置请求编码
request.setCharacterEncoding
get方式提交表单乱码处理:
在Tomcat的配置文件sever.xml中 加上URIEncoding="UTF-8"
post方式乱码处理
<%
String name=request.getParameter("name");
if(name!=null){//需要判null
name=new String(name.getBytes("iso-8859-1"),"utf-8");
}
out.println(name);
%>
response
<%
response.setCharacterEncoding("UTF-8");//设置响应的编码
response.sendRedirect("error.jsp");//重定向页面,可以让最终响应页面发生变化
response.getRequestDispatcher(目标页面).forward(request,response);//服务器跳转,保留request和response的信息
%>
session会话
服务端保留的一块区域,一次会话包含多个请求响应过程
<%
session.setAttribute(String,Object);//设置键值对
%>
<%=session.getAttribute(String) %>//获取键值对信息
设置session过期时间
session.setMaxInactiveInterval(Integer);//设置过期时间
或在web.xml中设置,单位是分钟
<session-config>
<session-timeout>10</session-timeout>
</session-config>
注销当前session对象
session.invalidate();
application
应用上的一片区域,重新部署,服务器重启后重置,通常统计在线人数等
application.setAttribute(String,Object);//application域中存放键值对
application.getAttribute(String)//application域中获得键值对
存储空间对比
application>session>request
JSP进阶
EL表达式
一种新型的表达式语言,用来替代out.println
格式${}支持
- 字面值
- 字面值+运算符 数字+数字运算符, 字符串不支持, 逻辑运算符 三元表达式
- 在内置的页面四大空间取值:
1、pageContext>2、request>3、session>4、application
el表达式会从四个空间中遍历所寻键值信息
四大空间可以指明:.pageScope .requestScope .sessionScope .applicationScope
pageContextname:${pageScopename}<br>
request域name:${requestScope.name}<br>
session域name:${sessionScope.name}<br>
application域name:${applicationScope.name}<br>
- param属性值,表单提交的值,URL传递的值都在param中,可以${param.属性}取值
- 逻辑运算符的优化 < > = >= <= == !=
项目 | Value |
---|---|
== | eq |
> | gt |
< | lt |
>= | ge |
<= | le |
!= | ne |
- $ {对象} 相当于调用toString(),访问对象属性${对象.属性} ${对象[属性]} ${对象.方法()}调用方法
pojo.User user=new pojo.User("zhangrui",21,"男");
session.setAttribute("user",user);
用户:${user}<br>
- ${对象.属性}实际调用get方法 属性首字母大写 name getName
- el解析属性过程 get()方法->方法->方法首字母小写 例:getName()->Name()->name