1.CS、BS优缺点
- CS:客户端服务器架构模式
优点:充分利用客户端机器的资源,减轻服务器的符合(一部分安全要求不高的计算存储任务放在客户端执行)
缺点:需要安装、升级维护成本较高 - BS:浏览器服务器架构模式
优点:客户端不需要安装,维护成本较低
缺点:所有的计算和存储任务都是放在服务器端,服务器的负荷较重;在服务端计算完成之后把结果传给客户端,导致频繁的数据通信,从而网络负荷较重。
2.Tomcat
Tomcat的安装和配置:
1、下载tomcat
2、配置环境变量,让Tomcat能够运行
因为Tomcat也是用java和C来写的,因此需要JRE,所以需要配置JAVA_HOME(配置方法和IDEA配置一样)
3、新建Web项目,并在Tomcat中部署
javaweb案例
将网页数据传入服务器并读取文件:
3.web文件的创建
1、新建项目------------新建模块
2、在模块中添加web
file --------project structure ------- module -------- 找到对应要创建web文件的模块添加web即可
3、创建artifact — 部署包
4、Libh和artifact的关系
先有artifact,后来才添加的mysql.jar。此时jar包并没有添加到部署包中,那么在project setting中有一个problems中会有提示,点击fix 选择add to …。另外,也可以将lib文件夹直接新建在WEB-INF下,缺点是该lib只能是当前的module独享,如果有第二个module需要再次重复的新建lib。
5、Tomcat配置与启动
可能遇到的问题:
启动后报错404意味着找不到指定资源,如果网址是:http://localhost:8080/,那么表明我们访问的是index.html,可以通过< welcome-file-list> 标签设置欢迎页(在Tomcat的web.xml中设置,或者在自己项目的web.xml中设置)
405问题。当前请求的方法不支持。比如表单method=post,那么servlet必须对应doPost。否则报405错误。
空指针或者NumberFormatException。因为由价格和库存,如果价格娶不到,结果想对null进行Integer.parseInt()就会报错。错误的原因大部分是因为name="price "此处写错了(多空格或拼写错误),结果在Serlvet端还是使用request.getParameter(“price”)去获取。
------ 点击add configuration
------ 添加Tomcat(选择Tomcat serve–local)
------ 添加Tomcat版本—修改URL(URL的地址是Tomcat启动后打开默认访问的网址)
-----将Update cation 和 frame deactivation选择如图所示。
------- 点击deployment
------点击+号(将要配置Tomcat文件模块选中)
package com.lyy.servlets;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class AddServlet extends HttpServlet {
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String fname = request.getParameter("fname");
String priceStr = request.getParameter("price");
Integer price = Integer.parseInt(priceStr);
String numberStr = request.getParameter("number");
Integer number = Integer.parseInt(numberStr);
String remark = request.getParameter("remark");
System.out.println("fname="+fname);
System.out.println("price="+price);
System.out.println("number="+number);
System.out.println("remark="+remark);
}
}
html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="add" method="post">
名称:<input type="text" name="fname"/><br/>
价格:<input type="text" name="price"/><br/>
库存:<input type="text" name="number"/><br/>
备注:<input type="text" name="remark"/><br/>
<input type="submit" value="添加" />
</form>
</body>
</html>
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>AddServlet</servlet-name>
<servlet-class>com.lyy.servlets.AddServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddServlet</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping>
</web-app>
<!--
1、用户发请求 action = add
2、项目中 web.xml找到url-pattern = /add ->第十二行
3、找第十一行的 servlet-name = AddServlet
4、找和 servlet-mapping 中 servlet-name一致的servlet,找到第七行
5、找第八行的servlet-class就能找到com.lyy.servlets.AddServlet
6、用户发送的是post请求(method=post),因此Tomcat会执行AddServlet中的doPost方法
-->