码迷,mamicode.com
首页 > 编程语言 > 详细

JavaWeb总结

时间:2019-12-04 10:32:47      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:isp   validate   for   范围   总结   无效   用户信息   获取   dog   

Web架构
ClientServer架构:客户端访问服务器;BroswerServer架构:浏览器访问服务器;

常见状态码
200 正常
300/301 页面重定向
403 权限不足
404 资源不存在
500 服务器内部错误

JSP解析过程
第一次访问时将JSP翻译为Java的Servlet再编译成class文件,后续访问只要代码没有变动,都可以直接读取class文件

Tomcat配置
1、修改端口号
apache-tomcat-9.0.16\conf\server.xml
技术图片
http修改port值,https修改redirectPort
技术图片

2、添加项目
apache-tomcat-9.0.16\conf\server.xml
技术图片
<Host>标签中添加<Context docBase="Web项目路径" path="虚拟路径,即url中的路径" />该配置方式需要重启Tomcat
新建apache-tomcat-9.0.16\conf\Catalina\localhost\项目名.xml,文件中添加<Context docBase="Web项目路径" path="虚拟路径,即url中的路径" />,将文件名改为ROOT.xml时,url中可省略项目名

3、设置首页
apache-tomcat-9.0.16\conf\web.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总结

标签:isp   validate   for   范围   总结   无效   用户信息   获取   dog   

原文地址:https://www.cnblogs.com/otonashi129/p/11956756.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!