JavaWeb基础知识
一.HTTP协议
1.http和https
http:不加密
https:加密
2.post和get和options(第一次握手:是否可以发送正式请求)
二.转发和重定向的区别
1.重定向
服务器告诉客户端,你去请求另外一个地址;客户端行为
(1)地址栏会变
(2)不能携带参数
resp.sendRedirect("url");
2.转发
服务器自己转发到服务器上的另一个请求; 服务器行为
(1)地址栏不会变
(2)可以携带参数
//放入参数ID
req.setAttribute(“ID”,ID);
req.getRequestDispatcher("success.jsp").forward(req,resp);
//获取参数ID
request.getAttribute(“ID”);
(request.getParma..(“ID”);是获取传递的响应参数)
三.session
“会话控制”。当用户在应用程序的Web页之间跳转时,存储在session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
1.只要客户端一旦连接上服务器,服务器就会自动产生Session;一个连接对应一个session,session可以在一个会话中传递信息
2.session存储数据以K-V形式,K不能为空,同样的K,若V不同则会进行替换。
3.使用
(1)通过setAttribute设置值。
session.setAttribute("username", "zhangsan");//存储数据
(2)通过getAttribute获得值。
session.getAttribute("username");//获取数据
(3)通过removeAttribute删除值
session.removeAttribute("username");//删除数据
四.地址的写法
1.分析
(1)路径是谁发起的(浏览器or服务器)
(2)路径开头直接 “/” 表示当前路径(主要就是这个当前路径,搞清楚就明白了)
2.具体写法
(1)转发由服务器发起的,其他都是由浏览器发起的。
(2)代码
①重定向
response.sendRedirect("/WebPath/index.jsp");
②转发
request.getRequestDispatcher("/index.jsp").forward(request, response);
③超链接
response.setContentType("text/html"); response.getWriter().write(" <html> <head></head> <body> <a href='/WebPath/index.jsp'>index.jsp<a> </body> </html>" );
④表单提交
response.setContentType("text/html"); response.getWriter().write(" <html> <head></head> <body> <form action='/WebPath/index.jsp'> <input type='submit' value='to index.jsp'/> </form> </body> </html> ");
3.总结
1、由浏览器发起的路径,“/”表示%tomcat根目录%/webapps根目录(项目根目录)
2、由服务器发起的路径,“/”表示项目中的WebRoot根目录
五.web.xml文件
为servlet设置别名
<servlet> <servlet-name>LoginServlet</servlet-name> //别名(简洁方便) <servlet-class>com.servlet.LoginServlet</servlet-class> //原名(太长太复杂,不便于使用) </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> //对应的映射,将它们联系起来 <url-pattern>/Login</url-pattern> //网页显示时的地址后缀 </servlet-mapping>
六.form下拉选框
1.form内容
<form>
<select name="part">
<option value="A">儿科</option>
<option value="B">外科</option>
</select>
<input value="提交" type="submit">
<form/>
2.servlet获取
根据name属性值即可接收,会接收到被选中<option>里的value属性值
String part = request.getParameter("part");
(结果:part=”A”or”B”)
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术