- 注解方式:编译成二进制文件,不能修改
配置文件:发布后也可修改 - servlet第一次访问开启,关闭服务销毁,多次访问不会重复创建
- super.service()根据请求方式调相应的函数(doGet/doPost)
get和post同种处理方式:注释掉super.service() - jar包放在WEB-INF的lib里
- 创建Dynamic web project时可勾选generate xml(web.xml)
- xml里的welcome-file-list默认访问首页,从web content开始找
- jsp内置域对象:
page当前页面 pageConetxt.getOut
.getrequest
.getservletcontext
.getsession
.getapplication
.setAttribute("user","kkk",pageContext.Session)
request<session<application - 解决乱码问题
requset.setCharacterEncoding("utf-8") - 网站每个页面的头部和尾部相同,把头部代码放在一个jsp里面每次引用
<jsp:include page="head.jsp"></..> - 客户端路径:浏览器去寻找,发起解析
服务器路径:服务端去寻找,eg:jsp:include
<link rel="stylesheet" href="style.css" type="text/css"/>
绝对路径从http://localhost:8080/开始找/web04/css/style.css
<%request.getContextPath()%>获取 当前项目名(前面有斜杠)
请求转发服务器地址不会发生变化,跳转到某个页面,该页面若用相对路径则显示不出来
所有java代码都由服务器执行
所以在浏览器上显示的都写绝对路径,jsp include相对
绝对路径:
客户端http://localhost:8080/
服务器端http://localhost:8080/web04 - 单例模式
public static JDBCUtil instance = new JDBCUtil()
使用JDBCUtil.instance.getconnection();
private JDBCUtil(){} - MVC分层结构:model,view(jsp),controller(servlet)
缺图!!!!!!!!!
ps:先setAttribute再getRequestDispatcher,setAttribute不能和sendRedict连用
request.getsession.setAttribute
session.getAttribute
src:(model<util<dao<service<controller<jsp)
model:实体类user,goods:setter,getter,generator
util:相当于数据库,实体类的集合,给集合加入新实体,static管理员
dao:调用util,增删改查
service:调用dao,封装方法
controller(servlet文件):处理响应,req.setcharacterEncoding()
步骤:调用service, setAttribute, dispatcher
webcontent:admin管理员,index.jsp、login.jsp、register.jsp - el表达式:
取对象属性:{map.key}返回value
取list:list<user> l = new ArrayList <user> ()
l.add("kk",123,12)
{empty list}
${pageContent.request.contextPath}
session.setAttribute("123",a),page,application,request
查找顺序request/session/application
不能放在<% %>里面 - jstl表达式
下载放入 WEB-INF的lib底下
<%page ...%>申明底下<%@ tag lib url=".../jstl/core" prefix="c" %>
1.<c: set var="username" value="kk" scope="request"></c:set>
2.<c:out value="$username"></c:out>
3.<c:remove var="username"></c:remove>
4.<c:if test="${age>=18}"></c:if>
<c:choose>
<c:when test="${age>=18}">
.........
</c: when>
<c:otherwise>
........
</c:otherwise>
</c:choose>
5.循环
<c:foreach var="I" begin="1" end="10">
${I}<br/>
</c:foreach>
遍历集合
<c:foreach items="${list}" var="u">
${u.username}
</c:foreach>
一般el取数据,jstl实现if和for
- json
将内存中的java bean转化成json字符串存储
序列化JSON.toJSONString(对象) return一个string
反序列化JSON.parseObject(str, Goods.class) return一个对象
JSON.parseArray(s, user.class)return一个List
16.ajax
发起请求:不进行页面跳转,页面刷新
js代码
setInterval("callAjax()", 2000);
function callAjax(){
$.ajax({
url:encodeURI("${pageContext.request.contextPath}/ajaxrequest?data=服务器发送的数据"),
//发送数据给客户端+?,传递的参数有中文用encodeURI,或者
data:{username:$("input[name]")},还有dataType等属性
type:"get",
cache:false,//否则只会发起一次
success:function(msg){
$("#msg").append(msg);
/*收服务器返回的数据msg
如果是服务器发数据
resp.setContentType("text/html;charset:"utf-8")
msg.getWritter().append("")
*/
}
});
}
代码没写完!!!!
- filter的作用:过滤敏感词,中文乱码,权限问题
@webFilter("/*")
xml配置
<filter>
<filter-name>encodingfilter</filter-name>
<filter-class>com.sikiedu.filter.EncodingFilter</filter-class>
<init-param>
<param-name>Encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 监听器