How do I prove that $f_n\to f$ in $L^p$?
Disclaimer: This answer is incomplete, I've only managed to prove the case where $p\in (1,2]$. The cases $p>2$ and $p=1$ remains unknown to me. Please feel free to criticize my answer if I made any mistakes.
Let $p\in (1,2]$ and $q$ be its conjugate satisfying $\frac 1p + \frac 1q = 1$. Since $I=[0,1]$ is a set of finite measure, the $L^p[0,1]$ spaces are downward directed in the sense that $q<q'$ implies $$ L^{q'}\subset L^q $$ for $q,q'\ge 1$. By the assumption that $p\in (1,2]$, we have $q\ge 2$ so $L^2$ includes all functions in $L^q$.
By duality, we have $f_n\rightharpoonup f$ since $\{g\}$ include all function in $L^q$. Together with $||f_n||_p\to ||f||_p$ we have $||f_n-f||_p\to 0$. Consult this page for more information.
This solves the case $p>1$: Let's show that $\int f_ng\to\int fg$ for all $g\in L^q=L^q[0,1]$.
Let $g\in L^q$. Let's show that $\int f_ng$ is Cauchy. Let $\epsilon>0$. Choose $p\in C[0,1]$ with $\Vert g-p\Vert_q<\epsilon$. Then for $n,m$ large, $$|\int f_ng-\int f_mg|\leq|\int f_n(g-p)|+|\int f_np-f_mp|+|\int f_m(p-g)|$$ Applying Hölder's inequality in the first and the third terms in the RHS, and using the fact that the sequence $(\Vert f_n\Vert_p)$ is bounded, say $K=\sup_n\Vert f_n\Vert_p$, yields $$|\int f_ng-\int f_mg|\leq 2\epsilon K+|\int f_np-f_mp|\tag{$*$}$$ which is small for $n,m$ large (because $K$ does not depend on $\epsilon$).
Let $L=\lim_n\int f_ng$. We will show that $L=\int fg$. Indeed, take $\epsilon$, $p$ and $K$ as above, and note that \begin{align*} |L-\int fg|&\leq|L-\int f_ng|+|\int f_n(g-p)|+|\int f_np-\int fp|+|\int f(p-g)|\\ &\leq|L-\int f_n g|+K\epsilon+|\int f_np-\int fp|+K\epsilon \end{align*} and both $|L-\int f_n g|$ and $|\int f_np-\int fp|$ go to $0$. This shows that $|L-\int fg|<2K\epsilon$ for all $\epsilon$, and therefore $L=\int fg$.
Therefore, $f_n\to f$ weakly. Refering to the same question as in BigbearZzz's answer, we conclude that $f_n\to f$ in $L^p$.