大家好:
想問一下我想重html傳值到java
然後作運算
但是都失敗
n1.jsp的程式
<form action="show.java" method="post">
<input id="datepicker1" name="datepicker1"type="text" />
<input id="datepicker2" name="datepicker2" type="text" />
<button submit="submit">button</button>
</form>
show.java的程式
public class Show {
String datepicker1,datepicker2;
//set & get;
public void getdata()
{ if(datepicker1....)
....
}
想問用post傳不到java那邊嗎?還是我還少寫了甚麼
我沒在寫 java,不過...
String datepicker1,datepicker2;
你只定義出這兩個變數出來,沒把 request 接進去啊。
java的 compiler 有人性化到可以自動去找你要的 html 頁面的 form field 嗎?
https://ithelp.ithome.com.tw/articles/10029373
String datepicker1 = request.getParameter("datepicker1");
java需要有伺服器端配合啦,而且他並不是直譯式的語言,不可能按你程式寫的這樣跑XD
你好,我把java改成這樣
public class Show extends HttpServlet {
String datepicker1,datepicker2;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
datepicker1 = request.getParameter("datepicker1");
datepicker2 = request.getParameter("datepicker2");
}
}
n1.jsp這樣,但還是沒反應耶
<form action="n1.jsp" method="post">
<input id="datepicker1" name="datepicker1"type="text" />
<input id="datepicker2" name="datepicker2" type="text" />
<button submit="submit">button</button>
</form>
先開一下瀏覽器的開發工具,看一下瀏覽器有出現什麼訊息。
接下來...你的n1.jsp不會只有這幾行吧?你要他接post,那要看一下你怎麼接。
到這裡,還沒碰到你的java哪。接下來要看你怎麼編譯?還是你用什麼IDE?另外,你的伺服器是什麼?
一步一步來。
fillano你好:
我使用的是netbean,oracle資料庫,tomcat
按確定後瀏覽器沒出現任何錯誤訊息,只是我的資料被清空
想要的結果還是沒出來而已...
我希望按確定後他可以顯示價錢(EX:1/12-1/14 總銷售金額)
我n1.jsp程式碼
<%@page import="dto.axmt410"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%
Show sh=new Show();
List <axmt410> axmt=sh.Getaxmt410();
double oilre=0,total=0,oilpro=0;
for(axmt410 num : axmt)
{ switch (num.getOEB04().substring(0,1)) {
case "3":
//油壓
if ("T335".equals(num.getOEA01().substring(0, 4))){
oilre+= num.getOEB14().doubleValue()*num.getOEA24().doubleValue();
}else
oilpro+= num.getOEB14().doubleValue()*num.getOEA24().doubleValue();
break;
default:
//零件 其他
break;
}
}
out.println("油壓維修:"+oilre);
out.println("油壓成品:"+oilpro);
oilre=0;oilpro=0;
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="import" href="date.html">
<title>JSP Page</title>
</head>
<body>
<form action="n1.jsp" method="post">
<input id="datepicker1" name="datepicker1"type="text" />
<input id="datepicker2" name="datepicker2" type="text" />
<button submit="submit">button</button>
</form>
</body>
</html>
以及我show.java
public class Show extends HttpServlet {
private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
private Session session=sessionFactory.openSession();
String datepicker1,datepicker2;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
datepicker1 = request.getParameter("datepicker1");
datepicker2 = request.getParameter("datepicker2");
}
public List Getaxmt410()
{
String sql="select a.oea01 as OEA01,b.oeb04 as OEB04,a.oea24 as OEA24,b.oeb14 as OEB14,b.oeb14t as OEB14T "
+ "FROM oea_file a,oeb_file b,ima_file i "
+ "where b.oeb01 = a.oea01 and i.ima01 = b.oeb04 and "
+ "to_char(oea02, 'YYYY-MM-DD') between '" + datepicker1 + "' and '" + datepicker2 + "'";
Query query=session.createSQLQuery(sql).
setResultTransformer(Transformers.aliasToBean(axmt410.class));
return query.list();
}
}
不知為何這樣還傳不到java
有設路徑嗎?
@WebServlet(urlPatterns={"/PATH"})
froce
是這樣嗎?加了之後還是無反應阿QQ
urlPatterns 是你網站的路徑,並非你專案的路徑。
你總要告訴電腦說你瀏覽到哪個網址,要用哪些程式碼來對應啊。
你看起來寫web應該還是初嘗試,先找篇教學惡補一下吧。
http://www.codedata.com.tw/java/java-tutorial-the-3rd-class-3-servlet-jsp/
froce,文章我看完了
所以我專案是f
那路徑就是以下,對不對
@WebServlet(
urlPatterns={"/f/*"} ,
initParams={
@WebInitParam(name = "datepicker1", value = "datepicker1")
,@WebInitParam(name = "datepicker2", value = "datepicker2")
}
)
但還是不行....
...你應該沒有看懂,要不然就是囫圇吞棗。
我簡介一下網站的流程吧,要不然你搞不清楚。
1.當使用者在 browser 送出一個網址(EX:http://aaa.bbb.com/hello?name=word),伺服器(aaa.bbb.com)會收到 request。
2.伺服器看到網址有/hello的時候,他會去找程式裡的URL設定,那一段是使用者進到 /hello 後該做的事(urlPatterns指的就是這個)。
3.伺服器還會分析你這次的 request 到底送了些什麼東西出來,以這個例子,就是送了一個 GET,你可以用 request.getParameter("name") 接進來,他的值會是world。
4.然後伺服器就會照著你的code去處理你的邏輯,最後送出 render 後的 html code,也就是 response。
拿python的flask來寫個簡短的例子好了。
# 告訴伺服器/hello這個頁面指向下個函式,方法是用GET
@app.route('/hello', methods=['GET'])
# 實際要做的事。
def hello():
# 假設使用者送了GET進來,就傳回"Hello [name]"
if request.method == 'GET':
return "Hello " + request.args.get("name", "")
# 使用者如果沒傳GET進來的提示。
else:
return "Input your name by HTTP GET"
最後,java我真的不熟,能給你的都給你了,看得出來你對web這塊不熟,先去找一篇教學好好弄懂吧。
然後你專案在伺服器上的路徑,只要依照你框架所生成的,框架就會找到。
我不知道java有沒有測試的伺服器,現在的框架通常都會帶有一個簡單的測試伺服器,寫好你的code,然後下個指令,讓測試伺服器跑,你就可以在你的電腦 browser 測試你的網頁了。
fillano,froce,twluke大大好
報告一下
經過努力,我已經接收到從n1.jsp傳來的值了
但是放進去運算卻沒反應啊!!!!!
我想要選好日期案確定後,會自動在上面顯示金額
但她卻一直是0.......
show.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
datepicker1 = request.getParameter("datepicker1");
datepicker2 = request.getParameter("datepicker2");
request.getRequestDispatcher("n1.jsp").forward(request, response);
Getaxmt410();
}
public List Getaxmt410()
{
String sql="select a.oea01 as OEA01,b.oeb04 as OEB04,a.oea24 as OEA24,b.oeb14 as OEB14,b.oeb14t as OEB14T "
+ "FROM oea_file a,oeb_file b,ima_file i "
+ "where b.oeb01 = a.oea01 and i.ima01 = b.oeb04 and "
+ "to_char(oea02, 'YYYY-MM-DD') between '" + datepicker1 + "' and '" + datepicker2 + "'";
Query query=session.createSQLQuery(sql). setResultTransformer(Transformers.aliasToBean(axmt410.class));
return query.list();
}
建議先把Java EE Web底層架構了解一下,良葛格的文章不錯:
https://openhome.cc/Gossip/ServletJSP/
fillanotwlukefroce大大好
經過假日努力研究,良葛格文章有看了,Youtube影片也翻了
發現JSP傳JAVA是不是只能
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
user = req.getParameter("user");
if ("a".equals(user)) {
req.setAttribute("result",user);
}
RequestDispatcher rd = req.getRequestDispatcher("/a.jsp");
rd.forward(req,resp);
}
private void response(HttpServletResponse resp, String msg)
throws IOException {
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<t1>" + msg + "</t1>");
out.println("</body>");
out.println("</html>");
}
前端的東西傳到後端只能print+字串
沒辦法放到資料庫去做運算阿...?
請問有沒有什麼方案是能把資料傳到後端去還能做運算的呢?
請大大指點,謝謝
當然不是啦,要不然現在web怎麼會那麼興盛?
你能接到使用者的 request,接著就是把request轉成你程式語言的資料型態做運算,或是儲存到資料庫,或是叫server去做其他的事,最後將資料傳回使用者手上,這才是web的整個流程。
out.println("<t1>" + msg + "</t1>");
其實這句就已經是在做運算了啊。
報告各位大大
public List test(String user )
{
String sql="select* from product where price > '" + Integer.valueOf(user)+ "'";
Query query=session.createSQLQuery(sql).addEntity(Product.class);
return query.list();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String user = req.getParameter("user");
//Integer.valueOf();
if (user!=null) {
//abc(user);
response(resp, test(user));
}
}
private void response(HttpServletResponse resp, List msg)
throws IOException {
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<t1>" + msg + "</t1>");
out.println("</body>");
out.println("</html>");
}
我似乎傳成功了!!?
但我得到的都是位址,不是值阿
請問要怎樣把他轉成值?
<form action="show.java" method="post">
<input id="datepicker1" name="datepicker1"type="text" />
<input id="datepicker2" name="datepicker2" type="text" />
<button submit="submit">button</button>
</form>
<form action="n1.jsp" method="post">
<input id="datepicker1" name="datepicker1"type="text" />
<input id="datepicker2" name="datepicker2" type="text" />
<button submit="submit">button</button>
</form>
您的 JSP 上的 form action="xxx.do" 是要將這一頁資訊,傳到伺服機(Tomcat) 上的哪一個
java
若是您要傳給 【 public class Show extends HttpServlet {】
就要去 WEB.config 內設定, xxx.do 對應到 Show.java
Show.java 內 就用 datepicker1 = request.getParameter("datepicker1"); 收到數據
若是您要寫在同一JSP
一樣<% datepicker1 = request.getParameter("datepicker1"); %> 收到數據
JSP 跟JAVA 都會在編譯成 Class
若是您想學java 可以找"良葛格" 這說的很詳細