First JSP, currencyConversion.jsp
<%#page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Currency Conversion</title>
<style>
label{ display: inline-block;
width: 140px;
text-align: left;
padding-top:10px;}
</style>
</head>
<body>
<h1>Use JSP Declaration tag, JSP Scriplet and JSP Expression
in application</h1>
<font style="color:plum; font-family:verdana;"><b>
Currency Conversion</b></font>
<form id="currency" action="processCurrency.jsp" method="get">
<label for="amount">Amount (in RM)</label>
<input name="amount" id="amount"></br>
<label for = "currency">Convert to</label>
<select name="currency" id = "currency"><br/>
<option value = "1">USD</option>
<option value = "2">Pound Sterling</option>
<option value = "3">Euro</option>
</select>
<br />
<br />
<input type = "submit" id = "btnSubmit" value="Submit"/>
<input type = "reset" id = "btnReset" value = "Reset"/>
</form>
</body>
</html>
Second JSP, processCurrency.jsp
<%#page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Currency process</title>
</head>
<body>
<%
String currency=request.getParameter("currency");
int amount=request.getParameter("amount");
%>
<%!
final double USD=3.92;
final double STG=5.96;
final double EURO=4.47;
double calculateRate(String currency, int amount)
{
double currencyChange=0.00f;
if(currency.equals("1"))
currencyChange=(double)(amount*USD);
if(currency.equals("2"))
currencyChange=(double)(amount*STG);
if(currency.equals("3"))
currencyChange=(double)(amount*EURO);
return currencyChange;
}
%>
</body>
</html>
I have try using JSP:param, but it wont let me pass the amount as it state that different datatype.
<%int amount=request.getParameter("amount");%>
How to pass the currency and amount from the currencyConversion.jsp into double calculateRate(String currency, int amount) in the processCurrency.jsp?
What you get is a String value, convert it to int.
int amount = Integer.valueOf(request.getParameter("amount"));
<%
String currency=request.getParameter("currency");
double amount=Double.valueOf(request.getParameter("amount"));
out.println("MYR "+amount+" to");
final double USD=3.92;
final double STG=5.96;
final double EURO=4.47;
double currencyChange=0.00f;
if(currency.equals("1")){
currencyChange=(double)(amount*USD);
out.println("USD "+currencyChange);}
else if(currency.equals("2")){
currencyChange=(double)(amount*STG);
out.println("Sterling Pound "+currencyChange);}
else if(currency.equals("3")){
currencyChange=(double)(amount*EURO);
out.println("EURO "+currencyChange);}
%>
Related
I am trying to dynamically generate a list of dates without duplicates in JSP to display in a selector tag.
In my servlet class:
query = " SELECT * FROM visits";
prepStatement = connection.prepareStatement(query);
results = prepStatement.executeQuery();
Set<Date> vdates = new HashSet<>();
while(results.next()){
vdates.add(results.getDate("date"));
}
Date[] dates = vdates.toArray(new Date[vdates.size()]);
out.println(vdates);
request.setAttribute("dates", dates);
RequestDispatcher dispatcher = request.getRequestDispatcher("/js/selectorJSP.jsp");
dispatcher.forward(request, response);
In my selectorJSP file:
<%#page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Selector Page</title>
<script src="js/jquery-2.1.4.min.js"></script>
<script>
</script>
</head>
<body>
<h1>Hello World!</h1>
<select>
<option value="AllRecords">${dates[0]}</option>
</select>
<input type="button" onclick="" value="Download">
</body>
</html>
The result is that it just shows an empty field, I am trying to show one to make sure it works and make a loop to show all available dates in selector but not available.
This is my current JSP code:
<%# page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<jsp:useBean id="user" class= "uts.wsd.User" scope="session" ></jsp:useBean>
<%
String name = request.getParameter("name");
String email = request.getParameter("email");
String password = request.getParameter("password");
String gender = request.getParameter("gender");
String color = request.getParameter("favcol");
user.setName(name);
user.setEmail(email);
user.setPassword(password);
user.setGender(gender);
user.setFavouriteColour(color);
%>
<body style="background: <%= color %>;">
<% if (request.getParameter("tos") == null ) {%>
<p>
Sorry, you must agree to the Terms of Service.</p>
<p>Click <a href="register.jsp" > here </a> to go back.
</p>
<%} else { %>
<jsp:forward page="index.jsp" />
<% } %>
</html>
Here I use jsp:forward page="index.jsp" to redirect to index.jsp page. Then, if I want to use response.sendRedirect("index.jsp")? How can I proceed?
I tried this:
<% if (request.getParameter("tos") == null ) {%>
<p>
Sorry, you must agree to the Terms of Service.</p>
<p>Click <a href="register.jsp" > here </a> to go back.
</p>
<%} else { %>
<response.sendRedirect("index.jsp")>
<% } %>
</html>
But it failed. Please help! Thank you!!
response.sendRedirect() is Java code not a tag, so you should not close the scriptlet tags before typing it, and it is not to be preceded by < and closed with >...its just Java code:
<%
}
else
{
response.sendRedirect("index.jsp");
return; //this is to redirect immediately so it doesn't
//run any code below this point before redirecting
}
%>
I am trying to retrieve data from SQL query executed and validate the result with input I am making within form. I keep getting no return, in other words, it just returns empty value. Could you please help me with this matter or if this not the correct solution then how can I retrieve this value to perform validation.
My validation should match the inputed user with database user.
<%# page language="java" contentType="text/html; charset=US-ASCII"
pageEncoding="US-ASCII"%>
<%# taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%# taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Insert title here</title>
<script>
function validateForm() {
var x = document.forms["input"]["user"].value;
var y = document.forms["input"]["pwd"].value;
if (x == null || x == "" && y==null || y=="" ) {
alert("Username and Password must be filled out");
return false;
}
}
function validateUser() {
var x = document.forms["input"]["user"].value;
var variableFromServer = "${names.FIRST_NAME}";
document.write('<p>'+variableFromServer+'</p>');
if (x != variableFromServer) {
alert("Username is not right"+variableFromServer);
return false;
}
}
</script>
</head>
<body>
<sql:setDataSource var="db" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:********" user="******" password="******"/>
Connected
<sql:query dataSource="${db}" var="query_select">
Select * from User_Details
</sql:query>
<c:forEach var="names" items="${query_select.rows}" >
inside loop : <p>${names.FIRST_NAME}</p>
</c:forEach>
<form action= "/BilalWebtier/login.jsp" name="input" action="demo_form_action.asp" method="post" onsubmit="return validateForm() & validateUser();">
Username: <input type="text" name="user">
Password: <input type="password" name="pwd">
<input type="submit" value="Login">
<br/>
<br/>
</form>
<button type="button">Password Reset</button>
</body>
</html>
You should change it to the click event
<form action= "/BilalWebtier/login.jsp" name="input" action="demo_form_action.jsp" method="post" >
Username: <input type="text" name="user">
Password: <input type="password" name="pwd">
<input type="submit" value="Login" onclick="return validateForm() && validateUser();">
<br/>
<br/>
</form>
I want to pass the google initialize function a latitude and a longitude, the question is that with different users might have different starting points, which means, different locations.
what i have right now is :
<%# page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%# taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Reminiscence Therapy</title>
<script
src="http://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&sensor=false">
</script>
<link rel=stylesheet
href="http://jquery.malsup.com/cycle2/demo/demo-slideshow.css">
<link rel=stylesheet href="http://fonts.googleapis.com/css?family=Acme">
<link rel=stylesheet href="http://jquery.malsup.com/cycle2/site.css">
<script>
var map;
function initialize(lat, lng) {
var mapProp = {
center : new google.maps.LatLng(lat, lng),
zoom : 18,
mapTypeId : google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
}
google.maps.event.addDomListener(window, 'load', function() {
var lat = 51.45644, lng = -0.120850;
initialize(lat, lng);
});
</script>
</head>
<body>
<h2>My day in map</h2>
<div style='float: left'>
<form name='form1' action='FriendsListServlet' method='get'>
<input type='submit' name='btnsalvar' value='Photos of the day'>
</form>
</div>
<div>
<form name='form2' action='MapServlet' method='get'>
<input type='submit' name='btnsalvar' value='My day in map'>
</form>
</div>
<br />
<div id="googleMap"></div>
<div id="myWorkContent" class="myWorkContent">
<!-- Your images over here -->
<c:forEach items="${photosName}" var="photo">
<img src='images/<c:out value="${photo}" />' style="height: 80px;" />
</c:forEach>
</div>
<script src="http://www.google-analytics.com/urchin.js"></script>
<script>
_uacct = "UA-850242-2";
urchinTracker();
</script>
</body>
</html>
the problem is that the function
google.maps.event.addDomListener(window, 'load', function() {
is calling the initialize function with the values
var lat = 51.45644, lng = -0.120850;
but that is not what i want. I have a servlet that is behind this page. What that servlet does is calculating the starting point and i want the map to use as its center the point the servlet computes. How can that be done?
Change your jsp code to
var lat = <%= request.getAttribute("lat") %>, lng = <%= request.getAttribute("lng") %>;
In your servlet, before forwarding to the jsp, you need to add
request.setAttribute("lat",<Value which you calculated>);
request.setAttribute("lng",<Value which you calculated>);
Or, you may like to read the lat , lng from request.getParameter if you are using redirect to the page instead of forwarding.
I have a JSP page with a form which calls the same page after the submit button is pressed. In the page I define a variable x, initially with the value of 1 and hence it fetches the data from DB corresponding to 1. Now when submit is pressed the value of x increases to 2 and the data should be fetched from DB corresponding to the new value. My problem is that the value increases but data is not fetched.Please tell me why?
<%# page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%# page import="java.io.*" %>
<%# page import="java.sql.*" %>
<%# page import="java.util.*" %>
<jsp:useBean id="Student" scope="session" class="StudentBean.StudentLoginBean"></jsp:useBean>
<%int x=1; %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>welcome <jsp:getProperty property="login" name="Student" />
</title>
</head>
<body>
<%
try{
Class.forName("com.mysql.jdbc.Driver");
String URL="jdbc:mysql://localhost:3306/OnTest";
Connection con=null;
con=DriverManager.getConnection(URL,"root","root");
PreparedStatement stat=con.prepareStatement("select * from questions where qnNo="+x);
x+=1;
ResultSet rs=stat.executeQuery();
while(rs.next()) {
out.println(x);
out.println(rs.getString(1));%>
<form action="sucess.jsp">
<br><input type ="radio" name ="answer" value="a">
<%
out.println(rs.getString(2));%>
<input type ="radio" name ="answer" value="b">
<%
out.println(rs.getString(3));%>
<input type ="radio" name ="answer" value="a">
<%
out.println(rs.getString(4));%>
<input type ="radio" name ="answer" value="a">
<%
out.println(rs.getString(5));%>
<input type="submit" value="submit" name="submit">
</form>
<%
//System.out.println(rs.getString("name"));
//System.out.println(" "+rs.getString("password"));
//v.addElement(rs.getString("name"));
//v.addElement(rs.getString("name"));
}
if(!con.isClosed()) {
out.println("success");
}
}
catch(Exception e)
{
out.println(e);
}
%>
<h1><h1><h1>i am inside sucess</h1></h1></h1>
</body>
</html>
change this code - <%int x=1; %> to this <%!int x=1; %>.
Problem is : your x declaration is at local scope, which re-initializes for every call to .jsp (jsp_servlet).
by using <%! ... %> your x can be defined globlally.
Would be a good thing if you separe logic from view.
Anyway after pressing submit it will reload the page, setting the x variable again at 1.
A solution could be to send the x parameter with the post data and increment it then.
<input type="text" name="x" value="${x}" /> <!-- If you're using EL -->
<input type="text" name="x" value="<%=x%>" />
And
<%
int x = request.getParameter("x");
if(x == null){
x = 1;
}
%>
By separate logic from view i mean that you should use Servlets, you will find a lot of documentation online :)
while(rs.next())
{
out.println(x);
<form action="sucess.jsp">
out.println(rs.getString(1));%>
<br><input type ="radio" name ="answer" value="a">
<%
out.println(rs.getString(2));%>
<input type ="radio" name ="answer" value="b">
<%
out.println(rs.getString(3));%>
<input type ="radio" name ="answer" value="c">
<%
out.println(rs.getString(4));%>
<input type ="radio" name ="answer" value="d">
<%
out.println(rs.getString(5));%>
<input type ="radio" name ="answer" value="e">
<input type="submit" value="submit" name="submit">
</form>
<%
//System.out.println(rs.getString("name"));
//System.out.println(" "+rs.getString("password"));
//v.addElement(rs.getString("name"));
//v.addElement(rs.getString("name"));
}
Change these values and you will get the solution. Actually, you were not doing the first inside the Form method so it was behaving differently.