个人笔记整理
(就是简简单单地把CSDN当作一个可以随时随地整理笔记的工具,不喜勿喷~)
JAVA
Tomcat的配置:
端口,部署项目(两种webapps:在conf/server.xml:标记下配置)
Jsp元素:
七大元素:html,注释(有html注释和jsp注释两种,这两种区别就是一种会在网页源码部分显示一个只会在自己代码端显示),scriptlet,小脚本,表达式,动作和指令。
内置对象
九大内置对象:
request,response,out
session,application
pageContext,page,config,exception
作用域对象:
setAttribute(“key”,“val”);和getAttribute(“key”);
pageContext,request,session,applcation
get和post的区别
1.传参方式不同:
get:地址栏传参;post:隐式请求体方式提交传参
2.安全性不同:
get安全性差;post安全性较好(相对来讲)
3.长度
get:小量数据
post;大量数据(文件)
4.网页收藏或邮件发送:
get带参数收藏,post不可以
两种跳转(重定向和转发)的区别
1.地址栏:
重定向地址栏改变;转发地址栏不变
2.请求数据:
重定向不共享请求对象及数据;转发可以共享
3.跳转方式:
重定向是客户端的跳转,发起两次请求
转发是服务器端的跳转,仅发起一次请求
作用域对象的区别
pabeContext(不常用),request,session,application
pageContext:范围在当前页面及静态包含页面
request:转发页面
session:一次会话
application:整个web容器
嘿嘿~
登录
<%--
Created by IntelliJ IDEA.
User: 我的电脑
Date: 2023/2/7
Time: 15:57
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<%--form是提交数据的基本单位--%>
<form action="doLogin.jsp" method="post">
<p>
用户账号:<input type="text" name="username">
</p>
<p>
用户密码:<input type="password" name="password">
</p>
<p>
<input type="submit" value="立即登录">
</p>
<%
String msg=(String) request.getAttribute("message");//强转成字符串
msg=msg==null?"":msg;//判断
%>
<span style="color: red;"><%=msg%></span>>
</form>
</body>
</html>
登录的处理
<%--
Created by IntelliJ IDEA.
User: 我的电脑
Date: 2023/2/7
Time: 16:12
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录的处理</title>
</head>
<body>
<%!
String uname="wu";
String upass="123456";
%>
//这块代码块有写转发和重定向的一点区别
<%
//获取客户端提供过来的参数
String username= request.getParameter("username");
String password= request.getParameter("password");
//和数据库中的数据进行对比
if(uname.equals(username)&&upass.equals(password)){
//out.print("恭喜登录成功!");
//登录用户信息,保存到session作用域对象中,用来实现会话跟踪
session.setAttribute("username",username);
//跳转到首页index.jsp
response.sendRedirect("index.jsp");//重定向到index.jsp
}else{
//out.print("用户名或密码错误,请重新输入!");
//回去登录,带提示信息
//response.sendRedirect("login.jsp");
request.setAttribute("massage","用户名或密码提示错误!");
//转发
request.getRequestDispatcher("login.jsp").forward(request,response);
}
//重定向和转发的区别
%>
</body>
</html>
查看自己所做网站被浏览次数
<%--
Created by IntelliJ IDEA.
User: 我的电脑
Date: 2023/2/22
Time: 16:11
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>网站访问次数</title>
</head>
<body>
<%
//从application中取出计数的变量
Integer count=(Integer) application.getAttribute("count");
if(count==null){
count=0;
}else {
count++;
}
%>
</body>
</html>
JSP的执行过程
JSP的本质是servlet,第一次被访问时,转译成.java文件,再编译成.class文件,加载到tomcat运行。可以在tomcat目录下的work文件夹下找到源码及字节码文件。
JSP整个运行过程中,JSP对象只创建一次
网页出现问题所提示数字的意义
响应状态码
404:该资源不存在
500:服务器代码异常
200:页面访问成功
405:对应的方法没有定义
403:拒绝访问
问题404:排查
1.先查看tomc启动是否异常
2.检查tomcat的部署
Servlet
1.定义Servlet
自定义一个类,继承HttpServlet
2.配置
web.xml方式
<servlet>
<!--逻辑名-->
<servlet-name>login</servlet-name>
<servlet-class>com.wdzl.servlet.LoginServlet</servlet-class>
</servlet>
<!--对Servlet进行映射-->
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
注释方式
在Servlet 类上方配置注释
@WebServlet("/login")
lalala~
/**
*注释配置
*Servlet 方法
* 实例化 构造方法(1次)
* 初始化 init() (1次)
* 服务 service() (多次)
* 销毁 destroy() (1次)
*/
@WebServlet(value = "/reg")
public class RegisterServlet extends HttpServlet {
public RegisterServlet(){
System.out.println("构造了===");
}
@Override
public void init() throws ServletException {
System.out.println("init()");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("service()");
}
@Override
public void destroy() {
System.out.println("destroy()");
}
}
service()和doGet()及doPost()的关系
每次请求会先调用service()方法,在service()方法中调用mathod,判断是get还是post(需要用时会提示405)再调用doGet或doPost
init()初始化
//有两个方法,一个有参一个无参
public void init(ServletConfig config) throws ServletException {
//获取web.xml中配置的初始化参数
}
如何获取application对象
request.getServletContext()
在Servlet中调用getServletContext()
页面显示乱码
//页面内容乱码
resp.setContentType("text/html;charset=UTF-8");//必须放在getWriter();之前
//获取out
PrintWriter out = resp.getWriter();
Servlet实例化和初始化时间
默认情况下,第一次被访问时,才有实例化和初始化
自定义Servlet加载实例化初始化的时机和顺序