Skip to content
Snippets Groups Projects
Commit c85e5934 authored by SPTimmer's avatar SPTimmer
Browse files

sixth commit

parent d89d08da
No related branches found
No related tags found
No related merge requests found
Showing
with 350 additions and 76 deletions
package nl.utwente.di;
import java.io.*;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class ResourceHandler {
public String getFileContent(String fileName) {
String content;
try {
ClassLoader classLoader = getClass().getClassLoader();
URL url = classLoader.getResource(fileName);
if (url == null) {
throw new NullPointerException();
}
File file = new File(url.getFile());
InputStream stream = new FileInputStream(file);
StringBuilder builder = new StringBuilder();
try (Reader reader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8))) {
int c;
while (-1 != (c = reader.read())) {
builder.append((char) c);
}
}
content = builder.toString();
} catch (NullPointerException | IOException ignored) {
content = "<!DOCTYPE HTML>\n<html><head><title>Oops</title></head><body>Something went wrong.</body></html>";
}
return content;
}
}
package nl.utwente.di.bookQuote;
import nl.utwente.di.ResourceHandler;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
......@@ -7,36 +9,32 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/** Example of a Servlet that gets an ISBN number and returns the book price
/** Example of a Servlet that gets an ISBN and returns the book price
*/
public class BookQuote extends HttpServlet {
private static final long serialVersionUID = 1L;
private Quoter quoter;
public void init() throws ServletException {
public void init() {
quoter = new Quoter();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String docType =
"<!DOCTYPE HTML>\n";
String title = "Book Quote";
out.println(docType +
"<HTML>\n" +
"<HEAD><TITLE>" + title + "</TITLE>" +
"<LINK REL=STYLESHEET HREF=\"styles.css\">" +
"</HEAD>\n" +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1>" + title + "</H1>\n" +
" <P>ISBN number: " +
request.getParameter("isbn") + "\n" +
" <P>Price: " +
Double.toString(quoter.getBookPrice(request.getParameter("isbn"))) +
"</BODY></HTML>");
String template = new ResourceHandler().getFileContent("template.html");
String title = "Book Quote";
template = template.replaceAll("%t", title);
String content = "<table>\n" +
"<tr>\n" +
"<td>ISBN:</td><td>" + request.getParameter("isbn") + "</td>\n" +
"</tr><tr>\n" +
"<td>Price:</td><td>" + quoter.getBookPrice(request.getParameter("isbn")) + "</td>\n" +
"</tr>\n" +
"</table>\n";
out.println(template.replace("%c", content));
}
}
}
\ No newline at end of file
package nl.utwente.di.temperature;
public class Converter {
public static double convert(String string) {
public static double toKelvin(String value, String scale) {
try {
return (Double.parseDouble(string) - 32) / 1.8;
double d = Double.parseDouble(value);
switch (scale) {
case "K":
return d;
case "C":
return d + 273.15;
case "R":
return (d * 5) / 9.0;
case "F":
return (((d - 32) * 5) / 9.0) + 273.15;
default:
return 0;
}
} catch (NumberFormatException | NullPointerException exception) {
return 0;
}
}
public static double fromKelvin(double value, String scale) {
try {
switch (scale) {
case "K":
return value;
case "C":
return value - 273.15;
case "R":
return value * 1.8;
case "F":
return ((value - 273.15) * 1.8) + 32;
default:
return 0;
}
} catch (NumberFormatException | NullPointerException exception) {
return 0;
}
}
public static String degSymbol(String scale) {
switch (scale) {
case "C":
case "F":
return "&deg;" + scale;
default:
return scale;
}
}
}
package nl.utwente.di.temperature;
import nl.utwente.di.ResourceHandler;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
public class Temperature extends HttpServlet {
private static final long serialVersionUID = 1L;
public void init() throws ServletException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String docType =
"<!DOCTYPE HTML>\n";
String title = "Temperature";
out.println(docType +
"<HTML>\n" +
"<HEAD><TITLE>" + title + "</TITLE>" +
"<LINK REL=STYLESHEET HREF=\"styles.css\">" +
"</HEAD>\n" +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1>" + title + "</H1>\n" +
" <P>&deg;F: " +
request.getParameter("temp") + "\n" +
" <P>&deg;C: " +
Double.toString(Converter.convert(request.getParameter("temp"))) +
"</BODY></HTML>");
String template = new ResourceHandler().getFileContent("template.html");
String from = request.getParameter("from");
String to = request.getParameter("to");
String temp = request.getParameter("temp");
double k = Converter.toKelvin(temp, from);
double newVal = Converter.fromKelvin(k, to);
from = Converter.degSymbol(from);
to = Converter.degSymbol(to);
String title = String.format("Convert %s to %s", from, to);
template = template.replaceAll("%t", title);
String content = "<p>\n" +
temp + " " + from + " = " + newVal + " " + to + "\n" +
"</p>";
template = template.replaceAll("%c", content);
out.println(template);
}
}
\ No newline at end of file
<!DOCTYPE HTML>
<!-- Front end for the webBookQuote Servlet. -->
<html lang="en">
<head>
<title>%t</title>
<link rel="stylesheet" href="../styles.css">
<meta charset="UTF-8">
</head>
<body>
<header class="outer">
<div class="container">
<nav>
<a href="/labs/">home</a>
<a href="/labs/bookquote/">book quote</a>
<a href="/labs/temperature/">temperature</a>
</nav>
</div>
</header>
<main class="outer">
<div class="container">
<section>
<h1>%t</h1>
%c
</section>
</div>
</main>
<footer class="outer">
<div class="container">
Empty Footer
</div>
</footer>
</body>
</html>
......@@ -9,12 +9,29 @@
</head>
<body>
<h1>Web Book Quote Application</h1>
<form ACTION="./quote">
<p>Enter ISBN number: <input TYPE="TEXT" NAME="isbn"></p>
<input TYPE="SUBMIT">
</form>
<header class="outer">
<div class="container">
<nav>
<a href="/labs/">home</a>
<a href="/labs/temperature/">temperature</a>
</nav>
</div>
</header>
<main class="outer">
<div class="container">
<section>
<h1>Web Book Quote Application</h1>
<form ACTION="./quote">
<p><label for="isbn">Enter ISBN number:</label><input type="number" name="isbn" id="isbn" value=0></p>
<input TYPE="SUBMIT">
</form>
</section>
</div>
</main>
<footer class="outer">
<div class="container">
Empty Footer
</div>
</footer>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>HOME</title>
<meta charset="UTF-8">
<title>HOME</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header>
<nav>
<a href="/labs/bookquote/">book quote</a>
<a href="/labs/temperature/">temperature</a>
</nav>
<header class="outer">
<div class="container">
<nav>
<a href="/labs/bookquote/">book quote</a>
<a href="/labs/temperature/">temperature</a>
</nav>
</div>
</header>
<main>
<section>
<h1>Welcome!</h1>
<p>
<strong>
Hello everyone, welcome to this website.
</strong>
</p>
</section>
<main class="outer">
<div class="container">
<section>
<h1>Welcome!</h1>
<p>
<strong>
Hello everyone, welcome to this small website.
On this website are two servlets.
One simply lists some prices for 6 ISBNs.
The other can be used to convert temperatures.
Have fun I guess. <br><br>
Cheers, <br>
Sander
</strong>
</p>
</section>
</div>
</main>
<footer>
<footer class="outer">
<div class="container">
Empty Footer
</div>
</footer>
</body>
</html>
\ No newline at end of file
BODY { background-color: WHITE }
BODY {
background-color: #EEE;
display: grid;
grid-template-rows: auto 1fr auto;
min-height: 100vh;
margin: 0;
}
H1 { color: PURPLE;
text-align: left;
......@@ -49,4 +56,31 @@ TH.TITLE { background-color: #EF8429;
font-size: 40px;
font-family: Arial, Helvetica, sans-serif;
}
A { padding: 10px 0}
A:hover { color: red }
NAV A {
margin-right: 20px;
}
HEADER,
FOOTER {
box-sizing: border-box;
min-height: 50px;
background-color: LIGHTGREY;
padding: 8px;
}
BODY > .outer {
width: 100%;
}
BODY > .outer > .container {
margin-left: 15%;
width: 70%;
}
SECTION {
padding: 8px;
background-color: WHITE;
}
\ No newline at end of file
<!DOCTYPE HTML>
<!-- Front end for the webBookQuote Servlet. -->
<!-- Front end for the webTemperature Servlet. -->
<html lang="en">
<head>
......@@ -9,12 +9,46 @@
</head>
<body>
<h1>&deg;Fahrenheit to &deg;Celsius calculator</h1>
<form ACTION="./temperature">
<p>Enter &deg;F: <input TYPE="NUMBER" NAME="temp"></p>
<input TYPE="SUBMIT">
</form>
<header class="outer">
<div class="container">
<nav>
<a href="/labs/">home</a>
<a href="/labs/bookquote/">book quote</a>
</nav>
</div>
</header>
<main class="outer">
<div class="container">
<section>
<h1>Temperature Converter</h1>
<form ACTION="./temperature">
<p>
<label for="from">From</label>&nbsp;
<select name="from" id="from">
<option value="K">K</option>
<option value="C">&deg;C</option>
<option value="R">R</option>
<option value="F">&deg;F</option>
</select>
&nbsp;<label for="to">to</label>&nbsp;
<select name="to" id="to">
<option value="K">K</option>
<option value="C">&deg;C</option>
<option value="R">R</option>
<option value="F">&deg;F</option>
</select><br>
<label for="temp">Value:&nbsp;</label><input type="number" name="temp" id="temp" step="any" value=0>
</p>
<input type="submit" value="Convert!">
</form>
</section>
</div>
</main>
<footer class="outer">
<div class="container">
Empty Footer
</div>
</footer>
</body>
</html>
File added
No preview for this file type
No preview for this file type
No preview for this file type
<!DOCTYPE HTML>
<!-- Front end for the webBookQuote Servlet. -->
<html lang="en">
<head>
<title>%t</title>
<link rel="stylesheet" href="../styles.css">
<meta charset="UTF-8">
</head>
<body>
<header class="outer">
<div class="container">
<nav>
<a href="/labs/">home</a>
<a href="/labs/bookquote/">book quote</a>
<a href="/labs/temperature/">temperature</a>
</nav>
</div>
</header>
<main class="outer">
<div class="container">
<section>
<h1>%t</h1>
%c
</section>
</div>
</main>
<footer class="outer">
<div class="container">
Empty Footer
</div>
</footer>
</body>
</html>
No preview for this file type
File added
No preview for this file type
No preview for this file type
No preview for this file type
<!DOCTYPE HTML>
<!-- Front end for the webBookQuote Servlet. -->
<html lang="en">
<head>
<title>%t</title>
<link rel="stylesheet" href="../styles.css">
<meta charset="UTF-8">
</head>
<body>
<header class="outer">
<div class="container">
<nav>
<a href="/labs/">home</a>
<a href="/labs/bookquote/">book quote</a>
<a href="/labs/temperature/">temperature</a>
</nav>
</div>
</header>
<main class="outer">
<div class="container">
<section>
<h1>%t</h1>
%c
</section>
</div>
</main>
<footer class="outer">
<div class="container">
Empty Footer
</div>
</footer>
</body>
</html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment