[major=SE | course_id=PRJ301 | syllabus_id=13165 | semester=4 | combo=core | title=Java Web Application Development]
Course ID: PRJ301
Title EN: Java Web Application Development
Title VI: Phát triển ứng dụng Java web
Credits: 3.0
Prerequisites: DBI202, PRO192
Description: By the end of this course Students will be able to:
a) Knowledge: (what will students know?)
• Understand the core technologies of Java web programming:
- Servlet and JSP
- Scope of sharing state (session, application, request,page)
• Know how to develop and deploy your own websites using Java
• Understand and be able to apply MVC architecture for the web
- Learning how to apply JPA in websites using Java
• Learning how to apply AI in your own website using Java
b) Skills: (what will students be able to do?)
• Basic Web application development applying MVC Design Pattern using Servlet/Filter as Controller
• Creating a simple Web Application demo using JPA
Student tasks: - Attend at least 80% of contact hours in order to be accepted to the final examination
- Actively participate in class activities
- Fulfil tasks given by intructor after class
- Use their own laptop in class only for learning purpose
- Read the textbook in advance
- Promptly access to the https://flm.fpt.edu.vn/ for up-to-date course information
Tools: Web server application :Tomcat 9 or higher
IDE: Netbeans 13 or higher (as defined by the subject leader)
Java EE: 1.8 or higher
MS SQL Server 2019 or higher
Course type: traditional
Decision: 932/QĐ-ĐHFPT dated 08/22/2025
Approved date: 2025-08-22
CLO1: understand the basic web application structure and be able to deploy Web application
[1] category=Assignment; type=on-going; weight=30.0; duration=Option 1: 5 weeks; Option 2 (For Constructivism Approach only): Follow lecturer's proposal; question_type=LO7, LO8, LO9; grading_guide=Front end , back end development; completion_criteria=; clos=>0
[2] category=Practical Exam; type=on-going; weight=30.0; duration=Option 1: 85 minutes; Option 2 (For Constructivism Approach only): Follow lecturer's proposal; question_type=LO01, LO02, LO03, LO04, LO05, LO06,; grading_guide=Basic features of Java Web; completion_criteria=; clos=>0
[3] category=Progress Test 1; type=on-going; weight=5.0; duration=Option 1: 30 mins; Option 2 (For Constructivism Approach only): Follow lecturer's proposal; question_type=LO1, LO2; grading_guide=Basic features of Java Web; completion_criteria=; clos=>0
[4] category=Progress Test 2; type=on-going; weight=5.0; duration=Option 1: 30 mins; Option 2 (For Constructivism Approach only): Follow lecturer's proposal; question_type=s; grading_guide=Basic features of Java Web; completion_criteria=; clos=>0
[5] category=Workshop 1; type=on-going; weight=5.0; duration=Option 1: 1 week; Option 2 (For Constructivism Approach only): Follow lecturer's proposal; question_type=LO1, LO2; grading_guide=Basic features of Java Web; completion_criteria=; clos=>0
[6] category=Workshop 2; type=on-going; weight=5.0; duration=Option 1: 1 week; Option 2 (For Constructivism Approach only): Follow lecturer's proposal; question_type=LO3, LO4; grading_guide=Basic features of Java Web; completion_criteria=; clos=>0
[7] category=Final Exam; type=Final exam; weight=20.0; duration=60 minute; question_type=LO001, LO2, LO03, LO04, LO05, LO06; grading_guide=Basic features of Java Web; completion_criteria=; clos=4
[1] desc=Professional Java® for Web Applications; author=Nicholas S. Williams; publisher=Wrox; edition=1st edition; isbn=978-1118656464; main=True; online=True; note=http://library.books24x7.com/toc.aspx?bookid=62587
[2] desc=Article 1: http://docs.oracle.com/javase/tutorial/JDBC; author=; publisher=; edition=; isbn=; main=; online=True; note=
[3] desc=Article 2: https://docs.oracle.com/cd/B14099_19/web.1012/b14017/filters.htm; author=; publisher=; edition=; isbn=; main=; online=True; note=
[4] desc=Session 3 Guide to Using Prompt Engineering Effectively with Java Web; author=; publisher=; edition=; isbn=; main=; online=; note=
[5] desc=Session 8 AI_Netbeans24; author=; publisher=; edition=; isbn=; main=; online=; note=
[6] desc=Session 15 Using a Database Query Agent in Java Web Applications; author=; publisher=; edition=; isbn=; main=; online=; note=
Session 1: Introduction to java web application
+ The core and basic of Java web server technologies
+ Web design vs server technologies
Topic: Offline; Teaching type: LO1; LO: IT
ITU: Textbook: Chapter 1 & 2
Materials: PRJ301
Download: Read textbook, do exercise

Session 2: Setup Environment :
JDK: 1.8 or higher
Servlet container: Tomcat 10 or higher
Intergrate Netbeans 13 with the web container.
Topic: Offline; Teaching type: LO1; LO: TU
ITU: Textbook: Chapter 1 & 2
Download: Read textbook, do exercise

Session 3: Creating/Building the first application:
Learn to create Servlet
Guide to Using Prompt Engineering Effectively with Java Web
Topic: Offline; Teaching type: LO1; LO08; LO: TU
ITU: Textbook: Chapter 1 & 2
Download: https://flm.fpt.edu.vn/gui/role/student/Read textbook, do exerciseStudents learn how to use prompt engineering, which is essential when integrating AI-driven solutions into Java Web applications. When using large language models (LLMs) like OpenAI’s models, a well-structured prompt can significantly improve the accuracy and relevance of AI-generated responses- Do exercise

Session 4: Learn to create JSP
Deploy the web application
Topic: Offline; Teaching type: LO1; LO: TU
ITU: Textbook: Chapter 1 & 2
Download: Read textbook, do exercise
CLO2: understand and be able to work with the basic features of Java web application
Session 1: Wiritting the First Servlet
Create a servlet
+ Create a servlet class
+ Configure servlet for deployment
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 3
Download: Read textbook, do exercise

Session 2: Work with request and response objects
+ Understanding DoGet and DoPost
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 3
Download: Read textbook, do exercise

Session 3: + Using parameter to accept form submition & query string
+ Response text content to client
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 3
Download: Read textbook, do exercise

Session 4: Using AI in Netbeans24
Topic: Offline; Teaching type: LO1; LO: TU
ITU: Textbook: Chapter 3
Download: Students will study how to use Jeddict AI assisstant in Netbeans
CLO3: be able to work with JDBC
Session 1: Practice Classwork 1
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 3
Download: Read textbook, do exercise

Session 2: Practice Classwork 1
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 3
Download: Read textbook, do exercise

Session 3: Web Application Interacting with Database
+ JDBC Introduction
+ Types of JDBC Drivers
Topic: Offline; Teaching type: LO3; LO: IT
ITU: http://docs.oracle.com/javase/tutorial/jdbc/index.html
Download: Read textbook, complete classwork and Workshop 1

Session 4: Web Application Interacting with Database
+ JDBC Introduction
+ Types of JDBC Drivers
Topic: Offline; Teaching type: LO3; LO: TU
ITU: http://docs.oracle.com/javase/tutorial/jdbc/index.html
Download: Read textbook, complete classwork and Workshop 1
CLO4: be able to use different languages in JSP
Session 1: + JDBC Basics: Processing SQL Statements
Topic: Offline; Teaching type: LO3; LO: TU
ITU: http://docs.oracle.com/javase/tutorial/jdbc/index.html
Download: Read textbook, complete classwork and Workshop 1

Session 2: + JDBC Basics: Processing SQL Statements
Topic: Offline; Teaching type: LO3; LO: TU
ITU: http://docs.oracle.com/javase/tutorial/jdbc/index.html
Download: Read textbook, complete classwork and Workshop 1

Session 3: JDBC Basics: Processing SQL Statements
Use a Database Query Agent in Java Web Applications
Topic: Offline; Teaching type: LO3; LO08; LO: TU
ITU: http://docs.oracle.com/javase/tutorial/jdbc/index.html

Session 4: Implement CRUD application using MS SQL Server 2019 or version higher
Topic: Offline; Teaching type: LO3; LO: TU
ITU: http://docs.oracle.com/javase/tutorial/jdbc/index.html
Download: Read textbook, complete classwork and Workshop 1
CLO5: understand and be able to work with other server side objects in Java Web Application
Session 1: Implement CRUD application using MS SQL Server 2019 or version higher
Topic: Offline; Teaching type: LO3; LO: TU
ITU: http://docs.oracle.com/javase/tutorial/jdbc/index.html
Download: Read textbook, complete classwork and Workshop 1

Session 2: Implement CRUD application using MS SQL Server 2019 or version higher
Topic: Offline; Teaching type: LO3; LO: TU
ITU: http://docs.oracle.com/javase/tutorial/jdbc/index.html
Download: Read textbook, complete classwork and Workshop 1

Session 3: Practice Classwork 2
Topic: Offline; Teaching type: LO3; LO: TU
ITU: http://docs.oracle.com/javase/tutorial/jdbc/index.html
Download: Read textbook, complete classwork and Workshop 1

Session 4: Practice Classwork 2
Topic: Offline; Teaching type: LO3; LO: TU
ITU: http://docs.oracle.com/javase/tutorial/jdbc/index.html
Download: Read textbook, complete classwork and Workshop 1
CLO6: understand and be able to work with simple MVC Architecture
Session 1: Using JSP to display content
Create JSP?
+ Why use JSP?
3 Ways to use JSP
+ Only HTML in a JSP file
+ Only JSP code in a JSP file
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 4
Download: Read textbook,
do exercise

Session 2: +A mixture of JSP code with HTML text in A JSP file Using the Implicit variables in A JSP
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 4
Download: Read textbook,
do exercise

Session 3: Configuring JSP properties in the web.xml
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 4
Download: Read textbook,
do exercise

Session 4: Combining JSP and Servlet
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 4
Download: Read textbook,
do exercise
CLO7: be able to combine web front-end & back-end in the Java web application.
Session 1: Practice Classwork 3
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 4
Download: Read textbook,
do exercise

Session 2: Practice Classwork 3
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 4
Download: Read textbook,
do exercise

Session 3: Introduction to MVC Architecture
+ General of Java Application Design
Topic: Offline; Teaching type: LO6; LO: IT
ITU: Textbook: Chapter 4
Download: Read article 2, complete classwork

Session 4: Introduction to MVC Architecture
+ General of Java Application Design
Topic: Offline; Teaching type: LO6; LO: IT
ITU: Textbook: Chapter 4
Download: Read article 2, complete classwork
CLO8: be able to use JPA in the Java web application.
Session 1: + MVC Pattern
+ How to apply MVC in Java Web Application
Topic: Offline; Teaching type: LO6; LO: TU
ITU: Textbook: Chapter 4
Download: Read article 2, complete classwork

Session 2: + MVC Pattern
+ How to apply MVC in Java Web Application
Topic: Offline; Teaching type: LO6; LO: TU
ITU: Textbook: Chapter 4
Download: Read article 2, complete classwork

Session 3: Practice
Topic: Offline; Teaching type: LO6; LO: TU
ITU: Textbook: Chapter 4
Download: Read article 2, complete classwork

Session 4: Practice
Topic: Offline; Teaching type: LO6; LO: TU
ITU: Textbook: Chapter 4
Download: Read article 2, complete classwork
CLO9: be able to use AI in the Java web application.
Session 1: Maintaining state using session and cookie
+ Explain why session is nessesary
+ How session and cookie work
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 5
Download: Read textbook, complete classwork, do exercise

Session 2: + Store and Retreive data to session and cookie
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 5
Download: Read textbook, complete classwork, do exercise

Session 3: Practice Classwork 4
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 5
Download: Read textbook, complete classwork, do exercise

Session 4: Practice Classwork 4
Topic: Offline; Teaching type: LO2; LO: TU
ITU: Textbook: Chapter 5
Download: Read textbook, complete classwork, do exercise
Session 1: Expression Language
What and Why use Expression Language
How to write with the EL syntax
+ Immediate evaluation , [ ] operator,array, Arithmetic EL,Relational EL, Static Field
Topic: Offline; Teaching type: LO4; LO: TU
ITU: Textbook: Chapter 6
Download: Read textbook, complete classwork, do exercise

Session 2: + EL functions
+ Collections
How to use scoped variables in EL expressions
+ pageContext
Topic: Offline; Teaching type: LO4; LO: TU
ITU: Textbook: Chapter 6
Download: Read textbook, complete classwork, do exercise

Session 3: + sessionScope
+ applicationScope
Implicit Variables in EL
Topic: Offline; Teaching type: LO4; LO: TU
ITU: Textbook: Chapter 6
Download: Read textbook, complete classwork, do exercise

Session 4: Practice Classwork 5
Topic: Offline; Teaching type: LO9; LO: TU
ITU: Textbook: Chapter 6
Download: Read textbook, complete classwork, do exercise
Session 1: Using JPA
+ Guide to work with persistance connect to DB
Topic: Offline; Teaching type: LO9; LO: TU
ITU: Textbook: Chapter 19
Download: Read textbook, complete classwork, do exercise

Session 2: Practice Classwork 6
Topic: Offline; Teaching type: LO9; LO: TU
ITU: Textbook: Chapter 19
Download: Read textbook, complete classwork, do exercise

Session 3: Using Custom tag
+ Guide to create a simple Web Application demo using JPA
Topic: Offline; Teaching type: LO9; LO: TU
ITU: Textbook: Chapter 19
Download: Read textbook, complete classwork, do exercise

Session 4: Practice Classwork 7
Topic: Offline; Teaching type: LO4; LO: TU
ITU: Textbook: Chapter 19
Download: Read textbook, complete classwork, do exercise
Session 1: Introduction to Filter
+ Understand the purpose of Filter
Topic: Offline; Teaching type: LO5; LO: TU
ITU: Textbook: Chapter 9
Download: Read textbook, complete classwork, do exercise

Session 2: + Create, Declaring and Mapping Filter
Topic: Offline; Teaching type: LO5; LO: TU
ITU: Textbook: Chapter 9
Download: Read textbook, complete classwork, do exercise

Session 3: Forward and Redirect to another servlet
Using init parameters
Building a Coding AI Agent in a Java Web Application (Servlet-Based)
Topic: Offline; Teaching type: LO5; LO8; LO: TU
ITU: Textbook: Chapter 9
Download: https://flm.fpt.edu.vn/gui/role/student/Read textbook, complete classwork and Workshop 1Students are responsible for learning, implementing and experimenting with AI-driven database queries.

Session 4: Practice Classwork 8
Topic: Offline; Teaching type: LO5; LO: TU
ITU: Textbook: Chapter 9
Download: Read textbook, complete classwork, do exercise
Session 1: Introduction to Event Listener
+ ServletContextEvent
+ HttpSessionEvent
+ ServletRequestEvent
Topic: Offline; Teaching type: LO5; LO: TU
ITU: https://docs.oracle.com/cd/B14099_19/web.1012/b14017/filters.htm
Download: Read textbook, complete classwork, do exercise

Session 2: + ServletContext AttributeEvent
+ HttpSessionBindingEvent
+ ServletRequestAttributeEvent
Topic: Offline; Teaching type: LO5; LO: TU
ITU: https://docs.oracle.com/cd/B14099_19/web.1012/b14017/filters.htm
Download: Read textbook, complete classwork, do exercise

Session 3: Assignment Evaluation
Course Summary for Final Exam
Topic: Offline; Teaching type: LO1, LO2, LO3, LO4, LO5,LO6,LO7; LO: TU
ITU: 

Session 4: Assignment Evaluation
Course Summary for Final Exam
Topic: Offline; Teaching type: LO1, LO2, LO3, LO4, LO5,LO6,LO7; LO: TU
ITU:
Session 1: Assignment Evaluation
Course Summary for Final Exam
Topic: Offline; Teaching type: LO1, LO2, LO3, LO4, LO5,LO6,LO7; LO: TU
ITU: 

Session 2: Assignment Evaluation
Course Summary for Final Exam
Topic: Offline; Teaching type: LO1, LO2, LO3, LO4, LO5,LO6,LO7; LO: TU
ITU: 

Session 3: Assignment Evaluation
Course Summary for Final Exam
Topic: Offline; Teaching type: LO1, LO2, LO3, LO4, LO5,LO6,LO7; LO: TU
ITU: 

Session 4: Assignment Evaluation
Course Summary for Final Exam
Topic: Offline; Teaching type: LO1, LO2, LO3, LO4, LO5,LO6,LO7; LO: TU
ITU: