JavaWeb总结
Posted otonashi129
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb总结相关的知识,希望对你有一定的参考价值。
Web架构
ClientServer架构:客户端访问服务器;BroswerServer架构:浏览器访问服务器;
常见状态码
200 正常
300/301 页面重定向
403 权限不足
404 资源不存在
500 服务器内部错误
JSP解析过程
第一次访问时将JSP翻译为Java的Servlet再编译成class文件,后续访问只要代码没有变动,都可以直接读取class文件
Tomcat配置
1、修改端口号
apache-tomcat-9.0.16confserver.xml
http修改port值,https修改redirectPort
2、添加项目
apache-tomcat-9.0.16confserver.xml
<Host>
标签中添加<Context docBase="Web项目路径" path="虚拟路径,即url中的路径" />
该配置方式需要重启Tomcat
新建apache-tomcat-9.0.16confCatalinalocalhost项目名.xml,文件中添加<Context docBase="Web项目路径" path="虚拟路径,即url中的路径" />
,将文件名改为ROOT.xml时,url中可省略项目名
3、设置首页
apache-tomcat-9.0.16confweb.xml
按顺序匹配
JSP
Scriptlet
<% %>
定义局部变量和Java语句
<%! %>
定义方法和全局变量
<%= %>
定义输出表达式
<% out.println() %>
和<%= %>
中都能识别html代码
指令
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" import="包名" %>
<%@ include...%>
引入其他文件
```<%@ taglib...%>引入标签库
中文乱码
get请求乱码:每个变量重新编码/修改erver.xml,更改tomcat条提交get的编码
标签中加入
post:jsp中设置request.setCharacterEncoding("UTF-8");
get和post区别
get在地址栏限时请求信息,地址栏只能显示4-5kb信息,请求数据存在大文件用post,文件上传用post
请求转发和重定向区别
请求转发跳转后地址栏不变,重定向改变
请求转发跳转时携带数据,重定向不携带
请求转发是服务器内部跳转,重定向是先返回客户端再请求服务端跳转新页面
cookie
由服务端生成,发送给客户端保存,提高了访问服务端的效率,降低了安全性
javax.servlet.http.Cookie
public Cookie(String name, String value)
String getName()
String getValue()
void setMaxAge(int expiry)
服务端发送Cookie给客户端:response.addCookie(Cookie cookie)
页面跳转(转发/重定向)
客户端获取Cookie:request.getCookies()
cookie和session区别:
session保存在服务端,cookie保存在客户端;session更安全;session保存sessionname为String,value为Object,cookie的value为String
内置对象
out:输出对象,向客户端输出内容 PrintWriter out = response.getWriter()
pageContext JSP页面容器
request:请求对象,存储客户端向服务端发送的请求信息
request方法:
String getParameter(String name):根据请求字段名Key(input标签的name属性值)返回字段值Value(input标签的value属性值)
String[] getParameterValues(String name):根据请求字段名Key返回多个字段值Value,checkbox
void setCharacterEncoding():设置客户端请求编码,tomcat7以前默认iso-8859-1,tomcat8以后utf-8
getRequestDispatcher("A.jsp").forward(request, response):请求转发的方式跳转到A.jsp
ServletContext getServerContext():获取项目的ServletContext对象
session:客户端第一次请求服务端时,若服务端发现该请求没有JESSIONID,则服务端会产生一个session对象用以保存该用户信息,且每个session对象都有一个唯一的sessionId,并产生name=JESSIONID一个cookie,value=服务端SESSIONID,服务端在响应客户端的同时,将该cookie发送给客户端,客户端cookie中的session与服务器中的session对应。以后再访问时,服务器会先用客户端cookie中的JESSIONID匹配服务端SESSIONID.
session方法: request.getSession()
String getId():获取sessionID
boolean isNew():判断是否第一次访问
void invalidate():使session失效
removeAttribute(String name):指定session失效
setAttribute()
Object getAttribute()
void setMaxInactiveInterval(秒):设置最大有效非活动时间
int getMaxInactiveInterval(秒):获取最大有效非活动时间
application 全局对象 request.getServletContext()
String getContextPath():获取当前项目的虚拟路径
String getRealPath(String name):获取name对应虚拟路径的绝对路径
response:响应对象
response方法:
void addCookie(Cookie cookie):服务端向客户端增加cookie对象
void sendRedirect("A.jsp") throws IOException:重定向方式跳转到A.jsp
void setContextType(String type):设置服务端响应的编码
作用范围:
pageContext-当前页面有效,页面跳转后无效<request-同一次请求有效,请求转发有效,重定向无效<session-同一次会话有效,跳转有效,切换浏览器无效<application-全局有效,同一项目有效
4个对象共有方法:
Object getAttribute(String name):获取name对应属性值
void setAttribute(String name,Object obj):新增或修改属性值
void removeAttribute(String name):根据属性名删除对象
config 服务器配置信息
page 当前JSP页面对象
exception 异常对象
Servlet
继承javax.servlet.http.HttpServlet并重写其中doGet()或doPost()方法的Java类,在HttpServlet中ServletResponse和ServletRequest被重写为HttpServletResponse和HttpServletRequest。jsp中的内置对象response和requset就是重写后的HttpServletResponse和HttpServletRequest.
Servlet2.5配置及工作流程:
在web.xml中配置:
<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-calss>
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
url请求与<url-pattern>
中的url匹配,匹配成功后再根据<servlet-mapping>
中的<servlet-name>
匹配<servlet>
中的<servlet-name>
,最后执行<servlet-class>
对应的servlet
Servlet3.0
不需要配置web.xml,只需要在Servlet类的定义上加入注解@WebServlet("url-pattern").url请求地址与@WebServlet中的值进行匹配.
Servlet生命周期
加载:Servlet容器自动处理
初始化:在Servlet被加载并实例化后执行init()方法进行初始化。可以修改配置使得在Tomcat启动时初始化,Servlet2.5修改web.xml在<servlet>
标签下加入<load-on-startup>1</load-on-startup>
1表示是第一个加载的Servlet,2、3依次递增,Servlet3.0在将注释修改为@WebServlet(value="url-pattern",loadOnStartup=1)
服务:实现抽象方法service()的doGet()和doPost()
销毁:Servlet被系统回收时执行destroy()
卸载:Servlet容器自动处理
Web容器设置初始化参数:
在web.xml中加入
<context-param>
<param-name>paramName</param-name>
<param-value>paramValue<param-value>
</context-param>
Servlet设置初始值:
Servlet2.5:
在web.xml的<servlet>
标签下加入
<init-param>
<param-name>paramName</param-name>
<param-value>paramValue<param-value>
</init-param>
Servlet3.0:
不需要配置web.xml,只需要在Servlet类的定义上加入注解@WebServlet(value="url-pattern",initParams={@WebInitParam(name="paramName", value="paramValue")}).
获取参数值:
获取web容器初始化参数:
在init()方法中调用父类GenericServlet的getServletContext() ,然后调用ServletContext中的getInitParameter(String name)
ServletContext servletContext = super.getServletContext();
String value = servletContext.getInitParameter("paramName");
获取Servlet初始化参数:
在init()方法中调用父类GenericServlet的getInitParameter(String name)
String value = super.getInitParameter("paramName");
路径
web.xml中 / 代表项目根路径 http://localhost:8080/ProjectName/
jsp中 / 代表服务器根路径 http://localhost:8080/
以上是关于JavaWeb总结的主要内容,如果未能解决你的问题,请参考以下文章
《java精品毕设》基于javaweb宠物领养平台管理系统(源码+毕设论文+sql):主要实现:个人中心,信息修改,填写领养信息,交流论坛,新闻,寄养信息,公告,宠物领养信息,我的寄养信息等(代码片段