1. 程式人生 > >jsp頁面中js程式碼中串插java程式碼

jsp頁面中js程式碼中串插java程式碼

一 說明

儘管現在的趨勢是前後端徹底分離的開發模式,但是熟悉一下以前的一些內容也未嘗不可。

二 具體實現

事實上這個是非常容易實現的,因為在.jsp頁面裡面寫java程式碼本身就很簡單,下面就是所有例子。

1. User類

package cn.smileyan.domain;

public class User {
	private String username;
	private String password;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

2 servlet類

package cn.smileyan.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.smileyan.domain.User;

/**
 * Servlet implementation class HelloServlet
 */
public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setAttribute("Hello", "Hello I am servlet");
		User user = new User();
		user.setPassword("<h1>I am password!</h1>");
		user.setUsername("<h2>I am username!</h2>");
		request.setAttribute("user", user);
		RequestDispatcher rs = request.getRequestDispatcher("hello.jsp");
		rs.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

3. jsp程式碼

index.jsp

<%@ 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>
<body>
	<a href="HelloServlet">點我進行測試</a>
</body>
</html>

hello.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="cn.smileyan.domain.User"  %>
  
<%
	User user = (User)request.getAttribute("user");
%> 	
<!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">
<script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
<title>js中穿插EL表示式例子</title>


<script>
	$(document).ready(function(){
	  $("#me").click(function(){
		  $("#me").html("<%=user.getUsername() %>");
	  });
	  $("#password").click(function(){
		  $("#password").html("<%=user.getPassword() %> ");
	  });
	});
</script>
</head>
<body>
	<h3 id="me">click me and I will be changed to username</h3>
	<h3 id="password">click me and I will be changed to password </h3>
</body>
</html>

當然最後記得配置Servlet

<servlet>
  	<servlet-name>HelloServlet</servlet-name>
  	<display-name>HelloServlet</display-name>
  	<description></description>
  	<servlet-class>cn.smileyan.servlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>HelloServlet</servlet-name>
  	<url-pattern>/HelloServlet</url-pattern>
  </servlet-mapping>

大功告成!點選前端介面就可以看到前端輸出的後臺的User類的物件的資訊。

需要注意的地方:

1. hello.jsp中要添上 import="cn.smileyan.domain.User 也就是在jsp的頂部匯入這個類

2. 在前面新增

<%
	User user = (User)request.getAttribute("user");
%> 	

來讀取後臺傳過來的資料。

大功告成!