kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

idea Spring MVC

https://www.cnblogs.com/wormday/p/8435617.html

创建Spring MVC项目

File -> new -> Project… -> Spring -> Spring MVC

配置

run -> Edit Configurations…

配置

File -> Project Structure…

运行

浏览器输入地址 http://localhost:8080/index.jsp

添加Controller

站点可以打开了,不过我们这个不是MVC,因为没有M、没有V也没有C

我们就从MVC中的C(Controller)开始,继续配置

在新建Controller之前,首先要建一个包,SpringMVC是没法运行在默认包下的,按照如下方式建包,

我建的包名称为:test

其实包名随意,但是必须要有。。。

再这个包下新建Java Class文件 MyController

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package test;

import org.springframework.ui.Model;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import test.dao.BaseDao;

import java.sql.*;

@Controller
@RequestMapping("/mvc")
public class MyController {

	static BaseDao baseDB = new BaseDao();

	@RequestMapping("/hello")
	public String hello(Model model) {
		model.addAttribute("name","nameval");
		return "hello";
	}

	@RequestMapping("/db")
	public String db(Model model) {

		String ou = "";

		try {
			ResultSet rs  = baseDB.executeQuery("SELECT * FROM info;");
			while (rs.next()) {
				ou = ou + rs.getString("id") + "      " + rs.getString("name") + "    " + rs.getInt("val"); //将查询结果输出
			}
		} catch (Exception e) {
			return "err";
		}

		model.addAttribute("dv", ou);
		return "db";
	}
}

也可以只把注解写在方法上,比如@RequestMapping(“mvc/hello”)

这个Controller的Action 地址应该是:

http://localhost:8080/mvc/hello.form 其实这个时候访问结果是404,因为后边还有不少配置没有做…

修改 url-pattern(web.xml)

先打开web\WEB-INF\web.xml文件

有关于ServletMapping的设置,通过这个设置,可以配置那些类型的url用那些servlet来处理

1
2
3
4
5
6
7
8
9
<servlet>
	<servlet-name>dispatcher</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>dispatcher</servlet-name>
	<url-pattern>*.form</url-pattern>
</servlet-mapping>

结合这一段xml,我们可以看到,IDEA默认帮我配置了一个名字叫做dispatcher的Servlet

这个Servlet使用org.springframework.web.servlet.DispatcherServlet这个类来处理

这个Servlet对应的Url是*.form

如果你跟我一样不喜欢每个MVC Url后边都带一个form,可以改成斜杠

1
<url-pattern>/</url-pattern>

如果你现在重新启动程序,然后继续访问http://localhost:8080/mvc/hello

发现,依旧404,并且伴随每次访问,都在Server的Output窗口有一个错误日志

org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/mvc/hello] in DispatcherServlet with name ‘dispatcher’

意思就是没有找到相应的Controller,不但要把Controller的代码写好,还要告诉Spring(在这里其实是dispatcher servlet)去哪里找这些Controller。。。

作为验证,你可以在Controller里边加一个断点,然后刷新页面,程序根本就没有执行到Controller里边

配置 component-scan(dispatcher-servlet.xml)

component-scan就是告诉Servlet去哪里找到相应的Controller

打开 dispatcher-servlet.xml

在已经存在的中间加上

1
<context:component-scan base-package="test"/>

再加上view前后缀

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:mvc="http://www.springframework.org/schema/mvc"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">

<context:component-scan base-package="test"/>

<!-- don't handle the static resource -->
<mvc:default-servlet-handler />

<!-- if you use annotation you must configure following setting -->
<mvc:annotation-driven />

<!-- configure the InternalResourceViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
	  id="internalResourceViewResolver">
	<!-- 前缀 -->
	<property name="prefix" value="/WEB-INF/jsp/" />
	<!-- 后缀 -->
	<property name="suffix" value=".jsp" />
</bean>
</beans>

base-package指定的就是存放Controller的包

做完这一步之后,重新启动项目,再次访问 http://localhost:8080/mvc/hello

这次应该还是404错误,不过比刚才的404错误前进了一大步

毕竟这次Controller已经执行了,如果刚才的断点没有去掉,你可以验证一下看看

这一回是因为是“hello”这个View找不到(我们刚才确实只是告诉他这个位置,但是从来没有创建过这个文件)

添加视图文件(.jsp)

在 web/WEB-INF/jsp 下创建 hello.jsp

1
2
3
4
5
6
7
8
9
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${name}, Hello world!!!!
</body>
</html>

通过 Model 向 View 传值

通过上面的操作,已经完成了MVC中的(V和C),M还没见影子,让我们继续修改

打开刚才定义的Controller 也就是 MyController.java文件

增加 ui.Model

打开copy来的项目时

要在 File -> Project Structure… -> Project Settings -> Project -> SDK -> new sdk -> JDK 主路经: /usr/lib/jvm/jdk-15.0.1

err1: Unsupported class file major version 57

File -> Settings…

Build, Execution, Deployment -> Compiler -> Java Compiler 修改 project bytecode version

err2: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

在IDEA中点击File > Project Structure > Artifacts > 在右侧Output Layout右击项目名,选择Put into Output Root。

执行后,在WEB-INF在增加了lib目录,里面是项目引用的jar包,点击OK。

mvc example

idea 安装

https://blog.csdn.net/qq_41890694/article/details/88651723

linux 2018.3.5 下载,提取码: 1314

win 2018.3.5 下载,提取码: 1314

JetbrainsIdesCrack-4.2-release.jar 下载,提取码: 1314

将 JetbrainsIdesCrack-4.2-release.jar 放到 bin 目录,对两个文件进行修改(idea.vmoptions和idea64.vmoptions),在这两个文件的最后一行添加下面这段代码

win

1
-javaagent:C:/IntelliJ IDEA 2018.3.5/bin/JetbrainsIdesCrack-4.2-release.jar

linux

1
-javaagent:/home/kk/IntelliJ_IDEA_2018.3.5/bin/JetbrainsIdesCrack-4.2-release.jar

运行 idea,选择 Activation code(激活代码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ThisCrackLicenseId-{
"licenseId":"ThisCrackLicenseId",
"licenseeName":"Suger",
"assigneeName":"",
"assigneeEmail":"642481395@qq.com",
"licenseRestriction":"For This Crack, Only Test! Please support genuine!!!",
"checkConcurrentUse":false,
"products":[
{"code":"II","paidUpTo":"2099-12-31"},
{"code":"DM","paidUpTo":"2099-12-31"},
{"code":"AC","paidUpTo":"2099-12-31"},
{"code":"RS0","paidUpTo":"2099-12-31"},
{"code":"WS","paidUpTo":"2099-12-31"},
{"code":"DPN","paidUpTo":"2099-12-31"},
{"code":"RC","paidUpTo":"2099-12-31"},
{"code":"PS","paidUpTo":"2099-12-31"},
{"code":"DC","paidUpTo":"2099-12-31"},
{"code":"RM","paidUpTo":"2099-12-31"},
{"code":"CL","paidUpTo":"2099-12-31"},
{"code":"PC","paidUpTo":"2099-12-31"}
],
"hash":"2911276/0",
"gracePeriodDays":7,
"autoProlongated":false}

jsp 环境初始化

jdk

https://www.oracle.com/java/technologies/javase-jdk15-downloads.html

linux 环境变量

1
2
3
vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/jdk-15.0.1/
export PATH=$PATH:/usr/lib/jvm/jdk-15.0.1/bin

win 环境变量

右键点击我的电脑,选择属性。点击左边高级系统设置,在弹出的窗口中切换至高级,点击最下面有一个环境变量,进入环境变量设置。

此处需要配置三个系统环境变量:JAVA_HOME 、CLASSPATH、Path;

首先配置点击JAVA_HOME,点击系统变量下的新建,变量名为JAVA_HOME,变量值为安装的jdk所在的路径,我的为:c:\java\jdk-15.0.1,点击确定

然后配置CLASSPATH,与上一步相同,点击新建,变量名为CLASSPATH,变量值为 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; ,注意最前面有个点不能省去,最后面要有英文的分号,点击确定

最后配置Path,在系统变量中找到Path并双击它,在变量值的最后加上:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;最后点击确定

mysql

win

https://dl.pconline.com.cn/download/2260891.html

选择 server only

系统可能需要依赖 .NET Framework 4.5.2 https://www.microsoft.com/en-us/download/confirmation.aspx?id=42642

mysql如何修改root用户的密码

1
2
格式:mysql> set password for 用户名@localhost = password('新密码'); 
例子:mysql> set password for root@localhost = password('123'); 

增加内容

1
2
3
4
5
6
7
8
create database test;
use test
create table info(id integer primary key, name varchar(30), val integer);
alter table info modify id integer auto_increment;
insert into info(name, val) values ('kk', 123);
insert into info(name, val) values ('ll', 456);
select * from info;
quit

tomcat

https://tomcat.apache.org/download-90.cgi

将 mysql-connector-java-5.1.47.jar 放到 lib/ 下

vim webapps/examples/db.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>

<html>
<head>
<title>通过JSP打开数据表</title>
</head>
<body>
<%
	try {
		Class.forName("com.mysql.jdbc.Driver");  //驱动程序名
		String url = "jdbc:mysql://localhost:3306/test"; //数据库名
		String username = "root";  //数据库用户名
		String password = "123";  //数据库用户密码
		Connection conn = DriverManager.getConnection(url, username, password);  //连接状态

		if (conn != null) {
			out.print("数据库连接成功!");
			out.print("<br />");
			Statement stmt = null;
			ResultSet rs = null;
			String sql = "SELECT * FROM info;";  //查询语句
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql);
			out.print("查询结果:");
			out.print("<br />");
			out.println("姓名"+"  "+"性别 "+"  "+"年龄");
			out.print("<br />");
			while (rs.next()) {
				out.println(rs.getString("id")+"      "+rs.getString("name")+"    "+rs.getInt("val")); //将查询结果输出
				out.print("<br />");
			}
		} else {
			out.print("连接失败!");
		}
	} catch (Exception e) {
		out.print("数据库连接异常!");
	}
%>
</body>
</html>

直接运行 bin/startup.sh

打开 127.0.0.1:8080/examples/db.jsp 即可看到数据库内容

log 乱码

打开Tomcat安装源码conf文件夹下的logging.properties文件,将UTF-8改成GBK